Как записать нажатия клавиш непосредственно на холсте tkinter? - PullRequest
1 голос
/ 24 февраля 2020

У меня проблемы с захватом нажатий клавиш на холсте tkinter. Нажатие клавиши фиксируется правильно, если я связываю его с виджетом метки, но не с холстом Мой код здесь:

from tkinter import * 
root = Tk()

class keyPresser():  
    # For test purposes, move the rectangle and print a message.
    # Nothing is happening
    def handle_down_key(self,event):
        self.canvas.focus_set() 
        self.canvas.move(self.rectangle,10,10)
        print('Down arrow key pressed')

    def __init__(self):   
        self.canvas = Canvas(root, width=400, height=400)
        self.rectangle = self.canvas.create_rectangle( 
            0, 0, 20, 20, fill = "black")
        self.canvas.bind("<Down>", self.handle_down_key)
        self.canvas.focus()
        self.canvas.pack()

mm = keyPresser()
root.mainloop()

Спасибо за любые предложения.

1 Ответ

0 голосов
/ 24 февраля 2020

Вот ты, go!

from tkinter import *
root = Tk()


class keyPresser():
    # For test purposes, move the rectangle and print a message.
    # Nothing is happening
    def handle_down_key(self, event):
        self.canvas.focus_set()
        self.canvas.move(self.rectangle, 10, 10)
        print('Down arrow key pressed')

    def __init__(self):
        self.canvas = Canvas(root, width=400, height=400)
        self.rectangle = self.canvas.create_rectangle(
            0, 0, 20, 20, fill="black")
        root.bind("<Down>", self.handle_down_key)
        self.canvas.focus()
        self.canvas.pack()


mm = keyPresser()
root.mainloop()
...