我正在编写一个 yahtzee 模拟器(用于学习),并希望同时运行几个屏幕(tkinter 实例),但我不希望它们同时启动,我无法弄清楚它们为什么会启动同时。
除了谷歌搜索之外,我没有尝试太多,我是 tkinter 编程的新手......
from tkinter import *
Screen1 = Tk()
screen2 = Tk()
Screen1.mainloop()
我预计只会显示screen1,但它们都被显示了,有什么帮助吗?
您正在显式创建两个窗口,因此会出现两个窗口。
您永远不应创建多个Tk
. 如果您需要多个窗口,则第二个和后续窗口需要是Toplevel
. 您只需要调用mainloop
一次——它不是创建窗口的原因,它只是窗口可以响应事件的机制。mainloop
无论您有多少个窗口,只需一个电话即可。
这样做的原因是基于 tkinter 的实现方式——tkinter 是嵌入式 tcl 解释器(一种完全不同的编程语言环境)的薄包装,每个实例都有自己的解释器。这意味着一个实例中的所有小部件和 tkinter 变量(StringVar
等)对于任何其他实例都是不可见和不可访问的。
如果您想创建其他窗口但最初隐藏它们,您可以withdraw
在要隐藏的任何窗口上调用该方法。