Python и tkinter: обработка событий внутри класса - PullRequest
0 голосов
/ 10 ноября 2018

Я хочу, чтобы моя программа выполняла некоторый код при нажатии любой из клавиш на клавиатуре.

from tkinter import *

class MyProgram(Frame):
    def __init__(self, root):
        self.root = root
        super().__init__(self.root)
        self.bind_all('<Key>', key)
        return

    def key(self, event):
        if event.char == event.keysym or len(event.char) == 1:
            #do some code on event
            print("key pressed")

if __name__ == '__main__':
    mp = MyProgram(Tk())
    mainloop()

Это мой код, но я получаю сообщение об ошибке, что мне не хватает параметра события в функции key ().

1 Ответ

0 голосов
/ 11 ноября 2018

Вы забыли использовать self., и в __init__ нет функции с именем key, поэтому Python выдает NameError. Решение простое; просто добавьте self. перед key в строке 7:

class MyProgram(Frame):
    def __init__(self, root):
        self.root = root
        super().__init__(self.root)
        self.bind_all('<Key>', self.key)
        return
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...