2013-04-22 32 views
3

所以,我對Python的GUI很陌生,我一直在試着理解envents過程,這裏是我的代碼,以及每當我按下'a'鍵時它應該打印「按下鍵」,但它不會爲我工作。Python事件與tkinter的結合

#!/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() 

回答

4

,因爲該計劃的重點是Tk元素它不執行回調函數。如果你更換符合root.bind("a", callback),它會如你所期望的那樣工作

問題在於,當你像其他widget一樣點擊它時,canvas元素不會收到焦點,所以它會只有在您致電canvas.focus_set()時纔回應keydown事件。

+1

請注意,您還可以綁定'<1>'來執行'focus_set',這將允許您單擊畫布並鍵入一個字符。 – 2013-04-22 20:55:17