【发布时间】:2016-07-14 20:28:53
【问题描述】:
我是一个 python 初学者,正在制作一个程序,该程序应该保存和显示露营地的预订(只是为了好玩......)。我以 OOP 方式对其进行了结构化,这意味着我为每个单独的窗口定义了一个类。当另一个 TopLevel 窗口(从 Subwindow2 创建)关闭时,我需要做的是更新一个显示数据库条目的 TopLevel 窗口(SubWindow2)。
import Tkinter as tk
class MenuWindow(tk.Tk):
def __init__(self, master):
self.master = master
#Widgets
def open_subwindow1(self):
self.window = Toplevel(self.master)
self.SubSubWindow1 = SubSubWindow1(self.window)
def open_subwindow2(self):
self.window = Toplevel(self.master)
self.SubSubWindow2 = SubSubWindow2(self.window)
class SubWindow1(tk.Tk):
def __init__(self, master):
self.master = master
#Widgets
class Subwindow2(tk.TopLevel):
def __init__(self, master):
self.master = master
#Widgets
self.button = tk.Button(master, text='Quit', command=open_subsub1)
def load_values(self):
#loading sqlite db-values into listboxes
def open_subsub1(self):
self.window = Toplevel(self.master)
self.SubSubWindow1 = SubSubWindow1(self.window)
class SubSubWindow1(tk.TopLevel):
def __init__(self, master):
self.master = master
#Widgets
self.button = tk.Button(master, text='Quit', command=on_quit)
def on_quit(self):
#Here I want to call a function that updates SubWindow2 (loads sqlite database values into several listboxes)
self.master.destroy()
root = tk.Tk()
myprog = MyProg(root)
root.mainloop()
如何从 SubSubWindow1 访问 Subwindow2 中的函数? self.master 仅指 TopLevel() 实例,对吗?
def on_quit(self):
self.SubWindow2.load_values()
self.master.destroy()
不起作用,我得到一个TypeError: unbound method load_values() must be called with SubWindow2 instance as first argument (got nothing instead)
这是“嵌套”TopLevel-windows 的无效方法吗?有什么办法?
任何评论都非常感谢!感谢您的帮助
【问题讨论】:
标签: python python-2.7 tkinter