Передача необязательных событий в метод, который имеет параметры по умолчанию - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть метод, который принимает необязательные события.Иногда он вызывается командой виджета, таким образом, нет события, а иногда - нажатием клавиши, связанной с окном Tkinter, которое передает событие.Однако, когда метод вызывается с помощью нажатия клавиши, булево значение, переданное лямбда-функцией, не передается - метод всегда печатает значение True (его параметр по умолчанию).Что я делаю неправильно?Вот работоспособный пример.

import tkinter as tk

class Main(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.button = tk.Button(self, text="Call Method", command=self.meth)
        self.button.pack()
        self.bind("<Control-s>", lambda var = False : self.meth(var))

    def meth(self, *event, var=True):
        print(event, var)

if __name__ == '__main__':
    main = Main()
    main.mainloop()

1 Ответ

0 голосов
/ 18 декабря 2018

Хорошо, я понял это.Ошибка новичка.Нажатие клавиши должно быть привязано к lambda event следующим образом:

self.bind("<Control-s>", lambda event, var = False : self.meth(var))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...