首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tk.mainloop()对root.mainloop()?

tk.mainloop()对root.mainloop()?
EN

Stack Overflow用户
提问于 2018-07-19 16:58:52
回答 2查看 2K关注 0票数 2

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

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

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

当我觉得tk.mainloop()不应该在tk实例变量名上使用时,有人能解释为什么它在这里工作吗?

使用root的示例如预期的那样工作:

代码语言:javascript
复制
import tkinter as tk

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

据我所知,使用tk的示例工作得很好:

代码语言:javascript
复制
import tkinter as tk

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

回答 2

Stack Overflow用户

回答已采纳

发布于 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()调用完全相同的代码。

票数 6
EN

Stack Overflow用户

发布于 2018-07-19 17:25:24

顺便说一句,每个tkinter小部件都继承了该方法,所以这也可以:

代码语言:javascript
复制
import tkinter as tk

lbl = tk.Label(text="Test")
lbl.pack()
lbl.mainloop()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51428209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档