Лямбда в Ткинтере - PullRequest
       1

Лямбда в Ткинтере

0 голосов
/ 27 января 2020

Я хотел бы сделать несколько ярлыков в Tkinter в Python, и я использовал этот код. Я хочу, чтобы текст на каждом ярлыке менялся, когда я нажимал на него. Я не совсем уверен, как это сделать. У меня есть список с исходным текстом и список с текстом, который я хочу показать при нажатии на ярлык. Я не знаю, должен ли я вызывать метод для изменения текста или я могу сделать это в лямбда-выражении; или, если есть какой-то другой, лучший способ сделать это. Я действительно не знаю, как использовать лямбда-функцию здесь. Пожалуйста помоги. : D Спасибо

for rows, rowinlist enumerate(self.list):
            for columns, label_text in enumerate(rowinlist):
                self.label = ttk.Label(text = label_text)
                self.fraze_otazky_label.grid(row = rows, column = columns)
                self.fraze_otazky_label.bind("<Button>", lambda : )

1 Ответ

0 голосов
/ 27 января 2020

Лучший способ - определить функцию, которая выполняет эту работу. В вашем случае нет необходимости использовать lambda.

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

Вот простой пример:

import tkinter as tk

root = tk.Tk()

def change_label(event):
    event.widget.configure(text="I was clicked")

for row in range(10):
    for column in range(10):
        label = tk.Label(text="Hello, world", width=15, bd=1, relief="raised")
        label.grid(row=row, column=column)
        label.bind("<1>", change_label)

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