@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"
  • Вопрос задан
  • 1976 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Лямбды не могут иметь побочных эффектов, к которым относится и присвоение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
lxsmkv
@lxsmkv
Test automation engineer
думаю так будет работать
lambda: self.change_text()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы