У меня есть следующая функция:

def button_enter(self, event, type):
    if self.green_button_anim_on:
        return
    self.canvas.itemconfigure(self.green_button, image=self.green_button_image_hover)

Эта функция служит для смены изображения зеленой кнопки на изображение "при наведении", когда пользователь наводит на нее указатель мыши. То, что я пытаюсь сделать - я хочу использовать эту функцию повсеместно, не только для зеленой кнопки, но и для красной кнопки, выйти кнопка и т. д. Поэтому я решил передать аргумент type функции, которая будет иметь такие значения, как red, green, quit и т. д.

Теперь мне нужно изменить слово зеленый везде внутри этой функции в соответствии со значением аргумента type. Как проще всего это сделать? Спасибо!

0
Ondřej Baše 29 Авг 2020 в 17:10

2 ответа

Лучший ответ

Вы можете сохранить кнопки и изображения в dict:

self.buttons = { "green": self.green_button, ... }
self.images = {...}
...

Затем, чтобы получить нужные объекты:

self.canvas.itemconfigure(self.buttons[type], image=self.images[type])
1
Wups 29 Авг 2020 в 14:31

Вы можете использовать enum в Python таким образом, вы можете использовать значимые имена и сопоставьте их с постоянными значениями.

0
Abhimanyu Shekhawat 29 Авг 2020 в 14:15