Tkinter窗口配置Python错误“没有返回”
好的,我有一个很长的程序。我在主题方面遇到了问题。这里的“主题”指的是我在Tkinter中创建的一个特定功能,它可以在激活时改变背景和文字颜色。以下是代码的简化版本:
global theme
theme = 0
windows = []
buttons = []
labels = []
messageboxes = []
代码...
def flavor_0():
global theme
for w in windows:
w.config(bg = 'black')
for l in labels:
l.config(bg = 'black', fg = 'white')
for b in buttons:
b.config(activebackground = "grey", activeforeground = "white", bg = 'black', fg = 'white')
for i in listboxes:
i.config(bg = 'black', fg = 'white', relief = "ridge")
theme = 0
更多代码...(我在这一部分定义了其他风格)
def set_theme():
global theme
global register
if theme == 0:
flavor_0()
elif theme == 1:
flavor_1()
elif theme == 2:
flavor_2()
elif theme == 3:
flavor_3()
elif theme == 4:
flavor_4()
甚至更多代码
thememenu = Tkinter.Menu(menubar,tearoff = 0)
thememenu.add_command(label="Plain",command = flavor_0)
thememenu.add_command(label="Mint", command = flavor_1)
thememenu.add_command(label="Strawberry", command = flavor_2)
thememenu.add_command(label="Banana", command = flavor_3)
thememenu.add_command(label="Peanut", command = flavor_4)
menubar.add_cascade(label="Flavor", menu = thememenu)
def windowinator():
new = Tkinter.Tk()
windows.append(new)
set_theme()
windowinator = Tkinter.Button(root,text="New Window", command = windowinator)
windowinator.pack()
buttons.append(windowinator)
好了,终于完成了。现在当我运行这个程序时,主题切换器可以正常工作。只要我之前打开的窗口没有关闭,我就可以毫无问题地改变主题。但是当我关闭其中一个窗口并尝试改变“主题”时,我得到的是一个没有主题的普通窗口,还有一个奇怪的错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\Users\Ahmet\Desktop\Fobby\FOBBY.py", line 70, in flavor_3
w.config(bg = 'black')
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1202, in configure
return self._configure('configure', cnf, kw)
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1193, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
TclError: invalid command name "."
那么,有人能告诉我到底出了什么问题吗?
1 个回答
1
你应该只创建一个 Tk
类的实例。看起来现在的情况是,最初的默认窗口(".")被销毁了。Tkinter 并不是为了这样使用而设计的。
如果你想要多个窗口,可以创建 Toplevel
的实例。