tk.mainloop() 对比 root.mainloop()?
tk.mainloop() vs root.mainloop()?
我试图找到一些 Q/A 或有关 tk.mainloop()
与 root.mainloop()
的使用的文章,但没有成功。
我的问题是:这两种用途有什么区别吗?对我来说,正确的方法是使用 tk_instance_variable_name.mainloop()
与仅使用 tk.mainloop()
但据我所知,两者似乎都可以正常工作。有什么理由需要避免 tk.mainloop()
还是只是一种偏好。
如果之前有人问过这个问题,请提供 Q/A link,因为我找不到它。我觉得它已经被问过了,但没有找到它。
有人可以解释为什么 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
时,它将 运行 与该小部件的根 window 关联的解释器中的 mainloop
函数。
如果您调用属于 tkinter
模块的 mainloop
方法(例如:您的示例中的 tk.mainloop()
),它将调用 mainloop
函数默认解释器。默认解释器是第一个创建的解释器。因此,在 Tk
、tk.mainloop()
和 root.mainloop()
的单个实例的正常情况下调用完全相同的代码。
顺便说一句,每个 tkinter 小部件都继承了该方法,所以这也有效:
import tkinter as tk
lbl = tk.Label(text="Test")
lbl.pack()
lbl.mainloop()
我试图找到一些 Q/A 或有关 tk.mainloop()
与 root.mainloop()
的使用的文章,但没有成功。
我的问题是:这两种用途有什么区别吗?对我来说,正确的方法是使用 tk_instance_variable_name.mainloop()
与仅使用 tk.mainloop()
但据我所知,两者似乎都可以正常工作。有什么理由需要避免 tk.mainloop()
还是只是一种偏好。
如果之前有人问过这个问题,请提供 Q/A link,因为我找不到它。我觉得它已经被问过了,但没有找到它。
有人可以解释为什么 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
时,它将 运行 与该小部件的根 window 关联的解释器中的 mainloop
函数。
如果您调用属于 tkinter
模块的 mainloop
方法(例如:您的示例中的 tk.mainloop()
),它将调用 mainloop
函数默认解释器。默认解释器是第一个创建的解释器。因此,在 Tk
、tk.mainloop()
和 root.mainloop()
的单个实例的正常情况下调用完全相同的代码。
顺便说一句,每个 tkinter 小部件都继承了该方法,所以这也有效:
import tkinter as tk
lbl = tk.Label(text="Test")
lbl.pack()
lbl.mainloop()