You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何实例化多个自定义按钮类仅显示一个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 19:24:20