如何解决Python-与多个模块中的GUI元素进行交互
我有一个内置于python的GUI,我想移至它自己的模块。但是,在与GUI元素进行交互以及正确导入它们时遇到了问题。 (下面的示例代码)
我认为部分原因是gui模块在main内部使用之前尚未完成导入。如果我要使用带有活动代码的第三个模块来启动它,则GUI可以正常工作,但是我不确定如何从没有应用程序对象的“主要”方法内部引用GUI窗口小部件。
我的问题主要是关于实现带有许多小部件的交互式GUI的推荐方法是什么。我是否完全试图将其拆分为不同的模块?在我的实际项目中,如果将它们全部放在一个模块中,那么它已经运行了数千行代码,而我还没有完成添加功能。
编辑:以下示例中的特定问题是按钮命令失败,错误为“未定义”'main'。类似地,将其切换为仅函数名会给出错误“未定义'testButton'”
gui.py
import tkinter as tk
class AppGUI(tk.Frame):
def __init__(self,master=None):
super().__init__(master)
self.master = master
self.pack()
self.master.minsize(self.master.winfo_reqwidth(),self.master.winfo_reqheight())
self.master.resizable(False,False)
self.master.protocol("WM_DELETE_WINDOW",self.quit_callback)
self.create_frames()
self.create_widgets()
def create_frames(self):
self.r0c0 = tk.Frame(self,width=200,height=100,bg="grey")
self.r0c0.grid(row=0,column=0,sticky="nw",padx=5,pady=5)
def create_widgets(self):
self.testButton = tk.Button(
master=self.r0c0,text="testButton",command=lambda: main.testButton("testing"),).pack()
self.outputTextBox = tk.Text(master=self.r0c0)
self.outputTextBox.pack()
import main
main.py
import tkinter as tk
def testButton(phrase):
tmp = app.outputTestBox.get("1.0",tk.END)
print(tmp)
app.outputTestBox.insert("0.0","testing: "+phrase+"\n")
import gui
##Begin Gui##
window = tk.Tk()
app = gui.AppGUI(master=window)
app.mainloop()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。