带有多个Tkinter窗口的复选按钮

2024-04-25 03:57:46 发布

您现在位置:Python中文网/ 问答频道 /正文

规格:
Python2.7.1
Tkinter(Tk版本8.5)
Windows7
怠速2.7.1

另一个进入两个主程序的循环 此排列干扰了剩余窗口上的复选按钮。在

例如:

temp = Tk()
temp.withdraw()

root = Tk()
root.withdraw()
temp.destroy()

root.mainloop()

(这看起来很不寻常,但它是这样设置的,“temp”窗口将显示在生成根窗口期间出现的问题)。在

但是, 似乎只要一个程序处理两个Tkinter窗口, Checkbutton(在根目录下)的功能将从窗口中消失。在

^{pr2}$

在切换.get如果选中了Checkbutton,()应返回1,否则返回0。
但是,由于添加了新窗口,切换.get始终返回0。在

(我尝试过重新格式化代码{这会带来它自己的奇怪错误},
重命名变量等。
在没有“临时”窗口的情况下,复选按钮工作正常。在

“temp”窗口在Checkbutton分配、打包之前被销毁,
或者“root”甚至进入主循环!)在

整个eg:

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模块) :|

非常感谢!在

(我今年年初才开始编程。
如果我犯了一些可怕的愚蠢的错误,请原谅我!)在


Tags: 版本gettkinter错误root按钮temptk
1条回答
网友
1楼 · 发布于 2024-04-25 03:57:46

Tkinter不是设计成有两个根窗口的。我很惊讶你的代码能工作。这与多线程无关Tkinter是单线程的,并且您似乎没有创建任何新线程(尽管如果是,这可能会导致问题的发生)/

您需要用一个主循环创建一个根窗口。如果需要另一个窗口,请创建一个Toplevel窗口,该窗口正是该小部件的用途。在

相关问题 更多 >