Python如何从数据库获取自动生成的ttk.Button按钮名称?
动态生成TTK按钮后获取按钮名称的实用方案
嘿,我来帮你搞定这个问题!你现在的代码只是把按钮创建出来并放到界面上,但没有保存这些按钮的引用,所以之后想获取它们的名称就找不到对象啦。这里给你两种常用的解决思路:
1. 提前存储按钮实例,后续批量获取名称
首先,咱们用一个列表把每个创建出来的按钮都存起来,这样之后想找哪个按钮都能直接从列表里取:
# 先建个空列表专门存按钮 button_list = [] for index, dat in enumerate(data2): # 创建按钮的时候先把实例存到变量里 btn = ttk.Button(master, text=dat[0]) btn.grid(row=index+1, column=1, pady=0, padx=0) # 把按钮添加到列表里 button_list.append(btn)
之后如果要获取所有按钮的名称,直接遍历这个列表,用cget("text")方法就能拿到每个按钮的text属性(也就是你说的“名称”):
# 遍历列表打印所有按钮名称 for btn in button_list: print("当前按钮名称:", btn.cget("text"))
2. 点击按钮时实时获取自身名称
如果是想在用户点击某个按钮的时候,获取这个被点击按钮的名称,那咱们可以给每个按钮绑定点击事件,在回调函数里获取:
# 定义点击事件的回调函数 def on_button_click(event): # event.widget就是被点击的那个按钮对象 clicked_btn_text = event.widget.cget("text") print(f"你刚刚点击了按钮:{clicked_btn_text}") # 修改按钮创建代码,绑定点击事件 button_list = [] for index, dat in enumerate(data2): btn = ttk.Button(master, text=dat[0]) btn.grid(row=index+1, column=1, pady=0, padx=0) # 给按钮绑定左键点击事件,触发上面的回调函数 btn.bind("<Button-1>", on_button_click) button_list.append(btn)
这样用户点哪个按钮,就能立刻拿到那个按钮的名称啦~
内容的提问来源于stack exchange,提问作者Suhaiß Abib
相关产品推荐
相关产品推荐

