【发布时间】:2011-07-17 02:00:08
【问题描述】:
规格:
Python2.7.1
Tkinter(Tk 版本 8.5)
Windows7
空闲 2.7.1
我正在编写一个程序,该程序“生成”两个窗口,撤回两个窗口,销毁一个窗口,然后将另一个窗口去图标化(然后进入主循环)。
这种安排干扰了剩余窗口上的检查按钮。
例如:
temp = Tk()
temp.withdraw()
root = Tk()
root.withdraw()
temp.destroy()
root.mainloop()
(这似乎不寻常,但它是这样设置的,以便“临时”窗口将显示在构建根窗口期间出现的问题)。
然而, 似乎只要一个程序处理两个 Tkinter 窗口, Checkbutton 的功能(在根目录中)消失了。
def ClickAButton():
print Toggle.get()
Toggle = IntVar()
Checkbutton(root, text = "Me is broke", variable = Toggle).pack()
ClickAButton
如果勾选了 Checkbutton,Toggle.get() 应该返回 1,否则返回 0。
但是,由于添加了新窗口,Toggle.get 总是返回一个 0。
(我尝试重新格式化代码{这带来了它自己的奇怪错误},
重命名变量等
Checkbutton 在没有“temp”窗口的情况下也能正常工作。
“临时”窗口在 Checkbutton 被分配、打包之前就被破坏了,
或者'root'甚至进入主循环!)
整个例如:
temp = Tk()
temp.withdraw()
root = Tk()
root.withdraw()
if 'certain condition':
root.destroy()
temp.deiconify()
temp.mainloop()
else:
temp.destroy()
Toggle = IntVar()
Checkbutton(root, text = "Why I only return 0?", variable = Toggle).pack()
root.deiconify()
root.mainloop()
出于某种原因,
Checkbutton 始终返回 0,即使已选中。
我怀疑这是 Tkinter 的多线程问题。
这里有什么我可以做的吗?
(实际的编码是巨大的。我并不急于将它全部切换到另一个 GUI 模块)
:|
非常感谢!
(我今年年初才开始编程。
如果我犯了一些可怕的愚蠢错误,请原谅我!)
【问题讨论】:
标签: python multithreading windows-7 checkbox tkinter