簡體   English   中英

Python3 Tkinter-使用按鈕打開.py文件

[英]Python3 Tkinter - Open .py file with button

我有多個要合並的.py tkinter GUI。 最初我沒有計划將它們組合成一個GUI,所以我有許多共同的變量以及全局命令,這使將每個窗口放入一個函數中以便將其合並到一個.py文件中變得很困難。 因此,我試圖查看是否可以獲取分別打開應用程序的按鈕以完成相同的操作。 我有一個帶有一些按鈕的菜單,它可以工作,但是,如果我關閉一個窗口並返回菜單,則無法“重新導入” .py文件,因此無法進入新窗口,將其關閉並返回。 這是我的代碼:

def newWindow():
    root.destroy()
    import newFile

button1 = tk.Button(root, command=newWindow)
button1.pack()

為了使問題更清楚:說我從菜單開始。 我單擊一個按鈕以關閉菜單,然后打開一個帶有單獨程序的新窗口。 我關閉該程序,該程序將自動重新打開菜單。 但是,現在當我再次從菜單中打開程序時,菜單將關閉,但是該程序不會重新打開,因為它已被導入。

好吧@drsom,這應該可以工作,在您import py1您應該from py1 import func1然后在下一行上具有func1() (顯然這意味着您將必須像下面所做的那樣創建func1func2 ),為此某些原因可以讓您永遠堅持下去,我不知道為什么純進口不會。 除此之外,您還必須(在函數之后)添加if __name__ == '__main__':和下一行的func2() ,以便首次運行該函數並啟動循環。

一個小例子:

PY1:

def func1():
    import tkinter as tk

    root1 = tk.Tk()

    def kill1():
        root1.destroy()
        from py2 import func2
        func2()

    button1 = tk.Button(root1, bg = 'green', text = 'hit to kill py1 and start py2', command = kill1)
    button1.pack()

    root1.mainloop()

if __name__ == '__main__':
    func1()

PY2:

def func2():
    import tkinter as tk

    root2 = tk.Tk()

    def kill2():
        root2.destroy()
        from py1 import func1
        func1()

    button2 = tk.Button(root2, bg = 'red', text = 'hit to kill py2 and start py1', command = kill2)
    button2.pack()

    root2.mainloop()

if __name__ == '__main__':
    func2()

這應該可以,但是如果要在原始功能之后繼續執行代碼,則可能會導致一些問題。 我不確定您還想要什么,但是只問:),希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM