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

标签 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()

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

最佳答案

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

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

关于Python3 Tkinter - 使用按钮打开 .py 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25174022/

相关文章:

python - 在3.8.2上安装kivy python

c - 函数错误,在 'conflicting type'编译时出现 'C'

javascript - 从对象内部的函数获取作用域外的变量 - Javascript

java - pack() 方法的问题

ios - 在 iOS 中实现跨 Controller 动画的最佳实践是什么?

user-interface - Javafx Tile Pane,设置最大列数

python - NoReverseMatch at/Reverse 未找到 'post_detail'

python - RabbitMQ 客户端性能

python - pip3.4 -V指的是python2.7的安装

javascript - 某些函数中的 JS/JQuery 全局数组错误