我试图找到有关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/

10-13 01:57