Python3 Tkinter - 使用按钮打开.py文件

时间:2014-08-07 04:13:44

标签: python function user-interface tkinter python-3.4

我想要组合多个.py tkinter GUI。我最初没有计划将它们组合到一个GUI中,因此我有许多共同的变量以及全局命令,这使得将每个窗口放在一个函数中以便将它组合在一个.py文件下很困难。所以我试图看看我是否可以单独打开应用程序以完成相同的操作。我有一个带有一些按钮的菜单,但是如果我关闭一个窗口并返回菜单,我就不能“重新导入”.py文件,所以我无法进入新窗口,关闭它并返回。这是我的代码:

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

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

让问题更清晰:假设我从菜单开始。我单击一个按钮关闭菜单并打开一个新窗口,上面有一个单独的程序。我关闭了自动重新打开菜单的程序。但是,现在当我再次从菜单打开程序时,菜单关闭,但程序将不会重新打开,因为它已经被导入。

1 个答案:

答案 0 :(得分:1)

好吧@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()

这应该可行,但如果代码要在原始函数之后继续执行,则可能会导致一些问题。我不确定你想要什么,但只是问:),希望这对你有所帮助。