我试图找到一些关于tk.mainloop()与root.mainloop()的使用的Q/A或文章,但没有成功。
我的问题是:这两种用途之间有什么区别吗?对我来说,正确的方法是使用tk_instance_variable_name.mainloop(),而不是只做tk.mainloop(),但据我所见,两者似乎都运行得很好。是否有任何理由需要避免tk.mainloop(),还是它只是一种偏好。
如果之前有人问过这个问题,请提供Q/A链接,因为我无法seam找到它。我觉得应该已经有人问起了,但找不到它。
当我觉得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发布于 2018-07-19 17:13:26
我试图找到一些关于tk.mainloop()与root.mainloop()的使用的Q/A或文章,但没有成功。 我的问题是:这两种用途之间有什么区别吗?
简单回答:在正常用例中没有区别。
每个小部件都有一个相关的tcl解释器,该解释器是在创建根小部件时创建的,无论是显式还是隐式。当您从任何小部件调用mainloop时,它将在与该小部件的根窗口相关联的解释器中运行mainloop函数。
如果调用作为mainloop模块一部分的tkinter方法(例如:示例中的tk.mainloop() ),它将调用默认解释器的mainloop函数。默认解释器是创建的第一个解释器。因此,在单个Tk实例的正常情况下,tk.mainloop()和root.mainloop()调用完全相同的代码。
发布于 2018-07-19 17:25:24
顺便说一句,每个tkinter小部件都继承了该方法,所以这也可以:
import tkinter as tk
lbl = tk.Label(text="Test")
lbl.pack()
lbl.mainloop()https://stackoverflow.com/questions/51428209
复制相似问题