0

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

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

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

Screen1.mainloop()

我预计只会显示screen1,但它们都被显示了,有什么帮助吗?

4

1 回答 1

2

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

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

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

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

于 2019-01-13T21:44:20.193 回答