【问题标题】:Python Tkinter [ can't invoke command: application has been destroyed ]Python Tkinter [无法调用命令:应用程序已被破坏]
【发布时间】:2013-02-06 16:27:36
【问题描述】:

我正在 Python 上创建两个函数:

  • 一个打开一个新窗口:new_window()
  • 另一个在其上创建按钮:create_buttons('text displayed')

当我启动它们时,new_window 运行良好,但 create_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

【问题讨论】:

  • masternew_window() 中的一个局部变量。不要在交互式 Python 控制台之外使用通配符导入 (*)。

标签: python window tkinter


【解决方案1】:

正如 J.F.Sebastian 所说,您需要使 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')

这不是很漂亮,但应该足够好,可以摆弄一下。如果代码变得严肃,最好将新窗口及其按钮封装到它自己的类中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 2022-08-03
    • 2016-06-11
    • 2019-06-15
    • 2017-12-31
    • 2014-03-05
    相关资源
    最近更新 更多