使用 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
方法。
我正在编写一个 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
方法。