@Evgenzsin

Как реализовать действие при нажатии кнопки с помощью функции lambda?

Весь код:
from tkinter import *

class Application(Frame):

    def __init__(self, master):
        super(Application, self).__init__(master)  
        self.grid()
        self.create_button()

    def create_button(self):
        self.bttn = Button(self, text = "Init Text", command = lambda: self.bttn["text"] = "New Text")
        #self.bttn["command"] = self.change_text
        self.bttn.grid(row = 0, column = 0)

    def change_text(self):
        self.bttn["text"] = "New Text"

root = Tk()
root.title("Lambda")
root.geometry("500x300")

app = Application(root)

root.mainloop()

Нажатие на кнопку меняет текст на кнопке, вызывая функцию change_text (закомментированная строчка).
Есть ли возможность сделать то же самое используя lambda-функцию.
Возникает проблема invalid syntax подсвечивая красным равно в выражении кода: lambda: self.bttn["text"] = "New Text"
  • Вопрос задан
  • 1998 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Лямбды не могут иметь побочных эффектов, к которым относится и присвоение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
lxsmkv
@lxsmkv
Test automation engineer
думаю так будет работать
lambda: self.change_text()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект