|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我在网上学习了一个tkinter模块弹出窗口及传值回到主窗口的代码
但是感觉看不懂,弹窗是如何继承主窗的?????
是把弹窗装入的主窗中吗?
# 主窗
class MyApp(tk.Tk):
def __init__(self):
super().__init__()
............
# 第三行
row3 = tk.Frame(self)
row3.pack(fill="x")
tk.Button(row3, text="设置", command=self.setup_config).pack(side=tk.RIGHT)
# 设置参数
def setup_config(self):
pw = PopupDialog(self)
self.wait_window(pw)
return
# 弹窗
class PopupDialog(tk.Toplevel):
def __init__(self, parent):
super().__init__()
self.title('设置用户信息')
self.parent = parent # 显式地保留父窗口
在这段代码中,弹窗并没有直接继承主窗口,而是通过创建一个继承自tk.Toplevel的PopupDialog类来实现的。tk.Toplevel是Tkinter中表示新窗口的类,它与tk.Tk类似,但不是应用程序的主窗口。
当你在主窗口类MyApp中调用setup_config方法时,它会创建一个PopupDialog的实例,传递当前主窗口self作为参数。这样,弹窗实例就有了一个对主窗口的引用。这个引用在弹窗的__init__方法中通过self.parent = parent语句保存。
弹窗并没有被“装入”主窗口,而是作为一个单独的窗口显示在屏幕上。它与主窗口保持关联,是因为在创建弹窗时将主窗口实例作为参数传递。这使得弹窗可以访问主窗口的属性和方法,从而实现与主窗口的交互。
另外,当弹窗被创建后,self.wait_window(pw)会暂停主窗口的运行,直到弹窗被关闭。这使得你可以在弹窗中设置一些参数,然后在弹窗关闭后,再继续主窗口的操作。
|
|