使用Python,如何从另一个GUI调用tkinter GUI?

2024-10-01 09:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我用tkinter创建了几个gui。但现在我有兴趣将它们组合成一个调用者GUI。因此,调用方GUI将具有按钮,当单击时,将打开其他GUI。但是,我不能让它工作。我已经正确地完成了导入(我想),编辑了subgui中的主要函数,并添加了命令=图形用户界面在我的纽扣里。我让它加载,但我得到关于丢失文件的错误…但当我运行一个图形用户界面本身,它工作得很好。在

在我的研究中,我读到Tkinter程序中只能有一个主循环。基本上,我不能使用Tkinter GUI调用另一个Tkinter GUI。你知道我可以做些什么吗?例如,我可以用wxPython创建调用方GUI并让它调用所有其他使用Tkinter的GUI吗?在

谢谢你!在


Tags: 文件函数命令编辑tkinter错误gui图形用户界面
2条回答

你不能“调用”另一个GUI。如果另一个GUI创建自己的根窗口并调用mainloop(),那么您唯一合理的选择就是生成一个新进程。这是一个简单的解决方案,只需要很少的工作。这两个gui将彼此完全独立。在

如果您可以控制两个GUI中的代码,并且希望它们一起工作,那么可以将GUI的基类设置为框架而不是根窗口,然后可以使用任意多个GUI创建任意多个窗口。在

例如,让我们从一个简单的GUI开始。复制以下内容并将其放入名为GUI1.py的文件中:

import tkinter as tk

class GUI(tk.Frame):
    def __init__(self, window):
        tk.Frame.__init__(self)
        label = tk.Label(self, text="Hello from %s" % __file__)
        label.pack(padx=20, pady=20)

if __name__ == "__main__":
    root = tk.Tk()
    gui = GUI(root)
    gui.pack(fill="both", expand=True)
    tk.mainloop()

您可以使用python GUI1.py这样的东西正常运行GUI。在

现在,创建该文件的精确副本并将其命名为GUI2.py。您也可以用同样的方式运行它:python GUI2.py

如果要制作一个同时包含这两个文件的程序,可以创建第三个文件,如下所示:

^{pr2}$

根据您的操作系统和窗口管理器的不同,一个窗口可能正好在另一个窗口的顶部,所以您可能需要移动它才能同时看到这两个窗口。在

谢谢你的建议。起初,您的代码不会在顶层窗口中打印文本。所以我编辑了一点,就成功了!谢谢您。GUI1和GUI2看起来像:

import tkinter as tk

def GUI1(Frame):
    label = tk.Label(Frame, text="Hello from %s" % __file__)
    label.pack(padx=20, pady=20)
    return

if __name__ == "__main__":
    root = tk.Tk()
    GUI1(root)
    root.mainloop()

然后来电者看起来像这样:

^{pr2}$

相关问题 更多 >