您已经使用简单的方法,您可以通过 记住每个按钮的 id,按钮的id 将在my_btn = Button(master, ...)哪里。my_btn然后将它们收集到列表中,并在每次要调用按其 ID 添加的所有按钮时使用 for 循环。看:
import tkinter as tk
button_list = []
master = tk.Tk()
def change_color():
for button in button_list:
button.config(bg='red')
my_btn = tk.Button(master, text="Button 1")
my_btn.pack()
button_list.append(my_btn)
my_btn = tk.Button(master, text="Button 2")
my_btn.pack()
button_list.append(my_btn)
my_btn = tk.Button(master, text="Button 3")
my_btn.pack()
button_list.append(my_btn)
my_btn = tk.Button(master, text="CHANGE COLOR", command=change_color)
my_btn.pack()
master.mainloop()
您可以使用字典而不是列表来选择您需要的按钮,这将是更好的做法。
当然,您可以参考上面代码中的所有按钮,但我认为您永远不需要它。
顺便说一句,您不需要使用is not None,因为if btn connected variable已经返回布尔值,因此您的循环应如下所示:
for btn in btns_list:
if btn connected variable:
btn.config(text='Press to reconfig', fg='green')
编辑1:
使用字典而不是列表的示例:
import tkinter as tk
# dictionary with buttons
d = {}
master = tk.Tk()
def change_color():
# for loop for dict keys
for button in d.keys():
# here we refer to each button(value of button key)
# and change the color
#
# here you can add some if statements to edit particular group
# of buttons
d[button].config(bg='red')
my_btn = tk.Button(master, text="Button 1")
my_btn.pack()
d['group1_btn_name1'] = my_btn
my_btn = tk.Button(master, text="Button 2")
my_btn.pack()
d['group2_btn_name2'] = my_btn
my_btn = tk.Button(master, text="Button 3")
my_btn.pack()
d['group1_btn_name3'] = my_btn
my_btn = tk.Button(master, text="CHANGE COLOR", command=change_color)
my_btn.pack()
master.mainloop()
但请记住 - 字典中的每个键都应该是唯一的,因此按钮名称(键)应该都不同(btn_name1, btn_name2, btn_name3)。您可以通过添加前缀来对它们进行分组some_group_btn1, some_group_btn2...other_group_btnnnn...
您可以创建具有任何名称的按钮和组,但某些东西(例如_)应该划分组前缀和按钮名称,以便在字典键中定义特定的组名称。例如,您可以添加这样的 if 语句:
if 'group1' in button.split('_'):
d[button].config(bg='red')
它将修改仅引用group1组的按钮。但请记住,由于拆分操作,除法符号_或-您想要的符号应始终相同。
- 在此处检查字典键
- 关于这里拆分