![](/img/trans.png)
[英]Python: tkinter.TclError: can't invoke "label" command: application has been destroyed
[英]Python Tkinter [ can't invoke command: application has been destroyed ]
我正在Python上创建两个函数:
当我启动它们时,new_window可以正常工作,但是create_button会显示[无法调用“ button”命令:应用程序已被破坏],好像我的主窗口已被破坏...但是我的窗口仍处于打开状态!
... 你有什么主意吗 ??
import Tkinter
from Tkinter import *
def new_window():
master = Tk()
def create_buttons(display):
new_button= Button(master, text=display)
new_button.pack()
new_window() ### OK, CREATES A WINDOW
create_buttons('text') ### DISPLAYS FOLLOWING BUG :
create_buttons('text')
TclError Traceback (most recent call last)
/neurospin/grip/protocols/MRI/childrenDTIreading_Letarnec_2011/tools/data_mysql/<ipython console> in <module>()
/neurospin/grip/protocols/MRI/childrenDTIreading_Letarnec_2011/tools/data_mysql/<ipython console> in create_buttons(display)
/usr/lib/python2.6/lib-tk/Tkinter.pyc in __init__(self, master, cnf, **kw)
2003 overrelief, state, width
2004 """
-> 2005 Widget.__init__(self, master, 'button', cnf, kw)
2006
2007 def tkButtonEnter(self, *dummy):
/usr/lib/python2.6/lib-tk/Tkinter.pyc in __init__(self, master, widgetName, cnf, kw, extra)
1933 del cnf[k]
1934 self.tk.call(
-> 1935 (widgetName, self._w) + extra + self._options(cnf))
1936 for k, v in classes:
1937 k.configure(self, v)
TclError: can't invoke "button" command: application has been destroyed
正如JFSebastian所说,您需要使master
变量可用于创建按钮的地方。 一些这样做的代码可能看起来像这样:
from Tkinter import *
def new_window():
return Tk()
def create_buttons(master, display):
new_button = Button(master, text=display)
new_button.pack()
master = new_window()
create_buttons(master, 'text')
那不是很漂亮,但是应该足以使它摆弄一些。 如果代码很认真,最好将新窗口及其按钮包装到自己的类中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.