【问题标题】:Python Tkinter Closing Windows [duplicate]Python Tkinter关闭窗口[重复]
【发布时间】:2020-07-29 13:52:08
【问题描述】:

在创建 Python Tkinter 程序时,我希望创建一个关闭程序的按钮。我试过了

#with master = Tk()
master.quit()

方法。它对我的程序完全没有任何作用——除了停止任何工作,尽管我没有收到任何追溯。

我试过的另一种方法是:

#with master = Tk()
master.destroy()

这又对我的程序没有任何作用——它确实给了我一个回溯错误,尽管它是:

_tkinter.TclError: can't invoke "button" command: application has been destroyed

我的完整代码是:

from tkinter import *
master = Tk()

exitbutton = Button(master,text="Exit",(all the other personalization stuff here),command=(master.quit())) 
#or I used master.destroy() in the command area.
exitbutton.grid(column=0,row=0)

以上方法均无效。

非常感谢 (未来)

【问题讨论】:

  • 看到这个问题link

标签: python user-interface tkinter grid exit


【解决方案1】:

您必须传递函数的名称而不是作为可调用对象:

from tkinter import *
master = Tk()

exitbutton = Button(master,text="Exit",command=master.destroy)##dont include the parentheses
##or I used master.destroy() in the command area.
exitbutton.grid(column=0,row=0)

这应该可以解决您的问题。

【讨论】:

    【解决方案2】:

    问题:

    • 唯一的问题是您在将函数(exitdestroy)作为command 传递给Button 时使用括号(),这会导致它在它所在的位置执行已定义。

    解决方案:

    • 解决方案是删除括号(),同时将函数(exitdestroy)作为Button 传递给Button

    固定代码:

    from tkinter import *
    
    master = Tk()
    
    exitbutton = Button(master, text="Exit", command=master.quit)   # you can also use master.destroy
    exitbutton.grid(column=0, row=0)
    
    master.mainloop()
    

    提示:

    • 由于导入所有(*)不是一个好习惯,你应该import tkinter as tk 或任何你想要的。您要做的唯一更改是在属于tkinter 的每个对象之前添加tk.

    那么你的代码将如下所示。

    最佳实践:

    import tkinter as tk
    master = tk.Tk()
    
    exitbutton = tk.Button(master, text="Exit", command=master.quit)   # you can also use master.destroy
    exitbutton.grid(column=0, row=0)
    
    master.mainloop()
    

    【讨论】:

      【解决方案3】:

      您想将函数对象传递给 command 关键字,因此不要使用括号。此外,您应该使用 TKinter 的破坏功能。

      exitbutton = Button(master,text="Exit",(all the other personalization stuff here),command=master.destroy) 
      

      【讨论】:

        猜你喜欢
        • 2019-03-27
        • 1970-01-01
        • 1970-01-01
        • 2017-09-04
        • 1970-01-01
        • 2023-02-26
        • 2018-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多