为何实例化多个自定义按钮类仅显示一个tkinter按钮?
问题原因与解决方法
问题根源
你定义的button是类属性,它属于My_button这个类本身,而非类的某个实例。所以不管创建多少个My_button对象,它们都共用同一个按钮实例。每次调用__init__里的pack(),只是把同一个按钮重复“放置”到窗口,本质上还是同一个按钮,因此窗口只会显示一个。
解决办法
把按钮改成实例属性,在__init__方法内部创建每个实例专属的按钮,这样每个My_button对象都会拥有独立的按钮:
修改后的代码:
import tkinter as tk root = tk.Tk() root.geometry("500x500") class My_button: def __init__(self): # 将按钮定义在__init__内,转为实例属性 self.button = tk.Button(root, width=10, height=5) self.button.pack() button1 = My_button() button2 = My_button() button3 = My_button() root.mainloop()
运行后窗口就会显示三个独立的按钮了。
内容的提问来源于stack exchange,提问作者Potato Maker
相关产品推荐
相关产品推荐

