我已经尝试了 2 天来让它在没有运气的情况下工作。我已经尝试了在相关问题上找到的所有方法 - 销毁、退出、sys.exit ......没有任何效果。问题是我的代码的编写方式似乎与通常在 SO 上编写的 tkinter 代码略有不同,因为我在主类之上为每个窗口使用了一个单独的类。因此,我很难看到类似问题中使用的“root”变量与我的代码对应的位置(常见的建议是“command=root.quit”或类似的)。但是,我确信代码的结构很好(应用程序运行良好),因为我从 sentdex 的“使用 Python 的 Tkinter GUI 中的多个 Windows/框架”视频复制了基本框架。
代码如下,去掉了与“StartPage”无关的部分。还有“PageOne”和“PageTwo”,不包括在内,它们与StartPage非常相似。我需要在这两个页面上使用相同的按钮。
主类中的 for 循环和 show_frame 方法用于通过按钮在框架之间切换。这一切正常。
class testApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
self.frames = {}
for F in (StartPage, PageOne, PageTwo):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
...
confirmFrame = tk.Frame(self)
confirmFrame.pack()
...
self.buttonNo = tk.Button(confirmFrame, text="No, quit the program",
command=????)
self.buttonNo.pack()
app = testApp()
app.mainloop()
为了完全清楚,StartPage 中的按钮“buttonNo”需要通过一些我无法弄清楚的命令退出整个程序。
感谢您提供的任何帮助。
我知道两种方式:
要获取顶层(您的窗口),请使用self.winfo_toplevel()
,因此self.winfo_toplevel().quit()
应该结束您的应用程序。
不太好的使用self._root().quit()
which 使用私有函数(请参阅 _root 上的前导下划线),因此可能会在没有警告的情况下进行更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句