如何让这个按钮退出 tkinter 中的父窗口?

肖恩

我已经尝试了 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何关闭Tkinter窗口?

在JavaFX中关闭子窗口后如何刷新父窗口?

如何在python tkinter中从子窗口到父窗口显示值?

如何更换窗口TKInter

关闭窗口(退出按钮/ command + w)不会退出主循环(Python 3.6-Tkinter)

Tkinter中按钮的颜色

继承父窗口并在tkinter中添加其他按钮?

使用“ root.protocol”将参数传递给Tkinter中默认退出窗口按钮分配的功能的问题

如何在Tkinter中禁用窗口移动

用户在tkinter Entry小部件中输入测试时,如何关闭当前的tkinter窗口并打开新的tkinter窗口

在tkinter中复制窗口

如何在Tkinter中刷新GUI窗口

如何获取tkinter窗口以在Linux中显示

在Tkinter 8.5和Python 3.3中单击子窗口的红色X时,如何销毁父窗口

如何在不编写类的情况下在Tkinter中访问按钮的父级?

在tkinter中更改按钮

如何将程序作为 tkinter 窗口的父级

无法在 tkinter 窗口 python 上退出全屏

在 Tkinter Python 中创建多个带有子窗口的按钮

如何更改 tkinter 窗口(标题栏中的一个)的“x”按钮的功能?

Tkinter 退出按钮

如何在 Python/Spyder 中向新的 tkinter 窗口添加按钮?

对于多个窗口,必须重复按下 Tkinter 的“退出”按钮

退出窗口时 tkinter 中的标签错误

如何使 tkinter 窗口变圆?

如何在 tkinter 中创建强制窗口

Tkinter 中带有按钮的可缩放窗口

Tkinter 中带有按钮的可缩放窗口

Tkinter 中带有按钮的可缩放窗口