Создание функции, которая может быть использована несколькими кнопками - PullRequest
0 голосов
/ 10 сентября 2018

Просто интересно, есть ли еще способ сделать так, чтобы эта функция могла влиять на несколько виджетов. Я хочу, чтобы при нажатии кнопки она менялась с красного на зеленый с помощью функции;

def colour_change():
   self.configure(bg="green")

button1 = Tk.Button(self, bg="red")
button1.pack()
button2 = Tk.Button(self, bg="red)
button2.pack()

Так, например, когда вы нажимаете кнопку 1, она должна изменить цвет с красного на зеленый. То же самое с кнопкой 2. Я знаю, что я могу сделать это, используя отдельные функции, но есть ли способ сделать это в одной и той же функции?

1 Ответ

0 голосов
/ 10 сентября 2018

Каким-то образом ваша функция должна определить, какой виджет вызвал ее; Одним из подходов является передача аргумента, который ссылается на виджет. В следующем примере при вызове команды передается индекс в список, содержащий виджеты:

import tkinter as tk


def colour_change(which_button):
    if buttons[which_button]['fg'] == 'red':
        buttons[which_button].configure(fg="blue")
    else:
        buttons[which_button].configure(fg="red")

root = tk.Tk()

button1 = tk.Button(root, text='button 1', fg="red", command=lambda: colour_change(0))
button1.pack()
button2 = tk.Button(root, text='button 2', fg="red", command=lambda: colour_change(1))
button2.pack()

buttons = [button1, button2]

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...