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

Presenting tk instances with Tk.mainloop()

我正在编写一个 yahtzee 模拟器(用于学习)并希望同时有几个屏幕(tkinter 实例)运行,但我不希望它们同时启动,我可以弄清楚为什么他们会同时开始。

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

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

Screen1.mainloop()

我原以为只有屏幕 1 会显示,但它们都显示了,有什么帮助吗?

您明确创建了两个 windows,因此出现了两个 windows。

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

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

如果您想创建额外的 windows 但最初隐藏它们,您可以对任何要隐藏的 window 调用 withdraw 方法。