Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python event binding with tkinter

So guys I'm new to GUIs in Python and I've been trying to understand the envents process, here's my code, and the intention that whenever I press the 'a' key it should print "key pressed'. But it won't work for me.

#!/usr/bin/env python3
# -*-coding:UTF-8 -*

from tkinter import *

root = Tk()

def callback(event):
    print("key pressed")

canvas = Canvas(root, width=100, height=100, bg='blue')
canvas.bind("a", callback)
canvas.pack()

root.mainloop()
like image 563
Colin G.D. Avatar asked Dec 18 '25 04:12

Colin G.D.


1 Answers

It doesn't execute the callback function because the focus of the program is on the Tk element. If you replace that line with root.bind("a", callback), it will work as you expect.

The problem is that the canvas element doesn't receive the focus when you click on it like other widgets as Entry, so it will only respond to keydown events if you call first canvas.focus_set().

like image 131
A. Rodas Avatar answered Dec 20 '25 01:12

A. Rodas



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!