Невозможно привязать функцию к событию в tkinter - PullRequest
0 голосов
/ 22 марта 2020

После привязки функции один раз, а затем отмены привязки, я не могу связать ее позже с той же самой функцией, когда потребуется позже. Я видел, что это работает нормально, когда я не использую '+' функцию привязки (я использую bind_all, если она имеет какое-либо значение). Но когда я использую '+', он снова связывает его ...

IDLE:

    >>> def Released(evnt):
            print(evnt.keysym, ' Removed')
    >>> funcid = _Win.bind_all("<KeyRelease>", Released, '+')

Я нажимаю несколько клавиш и при отпускании получаю оператор печати в Released ()

    >>> _Win.unbind("<KeyRelease>", funcid)
    >>> funcid = _Win.bind_all("<KeyRelease>", Released, '+')

Я нажал несколько клавиш, но ничего не вышло. Но также не было ошибок.

Так как мне исправить эту проблему?

Заранее спасибо:)

1 Ответ

0 голосов
/ 23 марта 2020

Так как никто не ответил, я подумал немного больше и пришел к обходному пути к проблеме освобождения ... Это не решение, а обходное решение ...

class FunctionManager:
    def __init__(self, funcs = []):
        self.funcs = list(funcs)
    def __call__(self, evnt):
        for func in self.funcs:
            func(evnt)
    def add(self, func):
        self.funcs.append(func)
    def remove(self, func):
        self.funcs.remove(func)

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

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