我试图找到有关tk.mainloop()
vs root.mainloop()
的使用的一些Q / A或文章,但均未成功。
我的问题是:这两种用途之间有什么区别吗?对我来说,正确的方法是使用tk_instance_variable_name.mainloop()
而不是仅仅使用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
最佳答案
我试图找到一些有关tk.mainloop()与root.mainloop()的使用的问题或解答,但没有成功。
我的问题是:这两种用途之间有什么区别吗?
简短的答案:在正常使用情况下没有区别。
每个窗口小部件都有一个关联的tcl解释器,无论是显式还是隐式地,在创建根窗口小部件时都会创建该解释器。当您从任何窗口小部件调用mainloop
时,它将在与该窗口小部件的根窗口关联的解释器中运行mainloop
函数。
如果调用属于mainloop
模块一部分的tkinter
方法(例如,在您的示例中为tk.mainloop()
),它将调用默认解释器的mainloop
函数。默认解释器是创建的第一个解释器。因此,在Tk
的单个实例的正常情况下,tk.mainloop()
和root.mainloop()
调用完全相同的代码。
关于python - tk.mainloop()与root.mainloop()吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51428209/