Skip to main content
 首页 » 编程设计

python之tk.mainloop() vs root.mainloop()

2025年05月04日15落叶

我试图找到一些关于 tk.mainloop() 与 root.mainloop() 的使用的问答或文章,但没有成功。

我的问题是:这两种用途之间有什么区别吗?对我来说,正确的方法是使用 tk_instance_variable_name.mainloop() vs 只做 tk.mainloop() 但据我所知,两者似乎都工作得很好.是否有任何理由需要避免 tk.mainloop() 或者它只是一种偏好。

如果之前有人问过这个问题,请提供 Q/A 链接,因为我找不到它。我觉得它已经被问过了,但没有找到它。

有人可以解释为什么 tk.mainloop() 会在这里工作,而我觉得它不应该工作,因为它没有被用于 tk 实例变量名。

使用 root 的示例按预期工作:

import tkinter as tk 
 
root = tk.Tk() 
tk.Label(root, text="Test").pack() 
root.mainloop() # using the variable name root 

据我所知,使用 tk 的示例效果很好:

import tkinter as tk 
 
root = tk.Tk() 
tk.Label(root, text="Test").pack() 
tk.mainloop() # using tk 

请您参考如下方法:

I have tried to find some Q/A or article about the use of tk.mainloop() vs root.mainloop() with no success.

My question is this: Is there any difference between the 2 uses.

简短回答:正常用例没有区别。

每个小部件都有一个关联的 tcl 解释器,它是在创建根小部件时创建的,无论是显式还是隐式。当您从任何小部件调用 mainloop 时,它将在与该小部件的根窗口关联的解释器中运行 mainloop 函数。

如果您调用属于 tkinter 模块的 mainloop 方法(例如:示例中的 tk.mainloop()),它将调用默认解释器的 mainloop 函数。默认解释器是第一个创建的解释器。因此,在 Tk 的单个实例的正常情况下,tk.mainloop() 和 root.mainloop() 调用完全相同的代码.