使用Tk.mainloop()呈现tk实例

时间:2019-01-13 21:30:23

标签: python tkinter mainloop

我正在编程yahtzee模拟器(用于学习),并且希望同时运行几个屏幕(tkinter实例),但是我不希望它们同时启动,所以我不知道为什么它们确实要同时开始。

除了谷歌搜索之外,我没有做太多尝试,我是tkinter编程的新手...

from tkinter import *
Screen1 = Tk()
screen2 = Tk()

Screen1.mainloop()

我希望只显示screen1,但同时显示它们,有帮助吗?

1 个答案:

答案 0 :(得分:2)

您正在显式创建两个窗口,因此出现两个窗口。

您永远不能创建多个Tk实例。如果需要多个窗口,则第二个窗口和后续窗口必须是Toplevel的实例。您只需要调用mainloop一次-不是创建窗口的原因,它只是窗口可以响应事件的机制。无论您有多少个窗口,都只需打一次mainloop

这样做的原因是基于tkinter的实现方式-tkinter是嵌入式tcl解释器(完全不同的编程语言环境)的薄包装,并且每个实例都有自己的解释器。这意味着一个实例中的所有小部件和tkinter变量(StringVar等)对于其他任何实例都是不可见和不可访问的。

如果要创建其他窗口,但最初将其隐藏,则可以在要隐藏的任何窗口上调用withdraw方法。