python - 自我对象和非自我对象之间有什么区别,特别是在 Tkinter 类中?
问题描述
我有 self.btn1 这个简单的代码
from tkinter import Tk, ttk, messagebox
import tkinter as tk
class Main(tk.Frame):
def __init__(self, root):
super().__init__(root)
self.btn1 = ttk.Button(self, text="test")
self.btn1.pack()
if __name__ == "__main__":
root = tk.Tk()
app = Main(root)
app.pack()
root.mainloop()
这段代码没有自我按钮
from tkinter import Tk, ttk, messagebox
import tkinter as tk
class Main(tk.Frame):
def __init__(self, root):
super().__init__(root)
btn1 = ttk.Button(self, text="test")
btn1.pack()
if __name__ == "__main__":
root = tk.Tk()
app = Main(root)
app.pack()
root.mainloop()
它们的工作原理相似,但有什么区别,我应该使用哪一个?
解决方案
Button
唯一真正的区别在于,如果您需要,检索对实例的引用是多么容易。对于前者,它只是app.btn1
. 对于后者,它是app.winfo_children()[0]
.
>>> app.winfo_children()[0] is app.btn1
True
推荐阅读
- amazon-web-services - PutObject 操作:使用身份提供者拒绝访问
- python - 用户获得特定角色后,如何使用 on_member_update 执行操作?
- html - “必需”属性不适用于 MailChimp 注册表单
- java - 从用户那里读入正数,直到他们输入负数。打印出读取的最大正数。爪哇
- php - 如何循环数组 A ,使其所有值都具有数组 B 中的每个值?
- pandas - Pandas:创建一个包含两个列表的堆积条形图
- alias - 有没有办法告诉 Fish shell 纠正带有空格的命令中的常见拼写错误?
- javascript - 未调用 componentDidUpdate(prevProps)
- ios - iOS 14 致命异常:在当前数据模型中找不到 NSInternalInconsistencyException 路径
- javascript - 材质 UI 数据网格最大更新深度超出错误