Вы уже используете простой способ. Вы можете запомнить идентификатор каждой кнопки по my_btn = Button(master, ...)
, где my_btn
будет идентификатором кнопки. Затем соберите их в списке и используйте для l oop каждый раз, когда вы хотите вызвать все кнопки, добавленные вами, по их идентификатору. См .:
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
уже возвращает вам логическое значение, поэтому ваш l oop должен выглядеть следующим образом:
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
. Но помните, что требуемый знак деления _
или -
всегда должен быть одинаковым из-за операции разделения.
- Проверка ключей словаря здесь
- О расколе здесь