Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter关闭窗口_Python_User Interface_Tkinter_Grid_Exit - Fatal编程技术网

Python Tkinter关闭窗口

Python Tkinter关闭窗口,python,user-interface,tkinter,grid,exit,Python,User Interface,Tkinter,Grid,Exit,在创建Python Tkinter程序时,我希望创建一个按钮来关闭该程序。我已经试过了 #with master = Tk() master.quit() 方法。它对我的程序完全没有任何影响——除了停止任何工作之外,尽管我没有收到任何回溯 我尝试过的另一种方法是: #with master = Tk() master.destroy() 这再次对我的程序没有任何影响-它确实给了我一个回溯错误,尽管它是: _tkinter.TclError: can't invoke "button" com

在创建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)
上述方法均无效。

非常感谢
(将来)

您希望将函数对象传递到command关键字中,因此不要使用括号。您还应该使用TKinter的destroy函数

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

必须传递函数名,而不是作为可调用函数传递:

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)

这将解决您的问题。

问题:

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()
  • 唯一的问题是,在将函数(
    退出
    销毁
    )传递到
    按钮
    时,使用括号
    ()
    ,作为
    命令
    ,这会导致在定义该函数的点执行该函数
解决方案:

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()
  • 解决方案是在将函数(
    退出
    销毁
    )作为
    命令传递到
    按钮
    时,删除括号
    ()
固定代码: 提示:

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()
  • 由于导入all(
    *
    )不是一个好的做法,您应该
    将tkinter作为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()
看到这个问题了吗