【问题标题】:Python event binding with tkinter与 tkinter 的 Python 事件绑定
【发布时间】:2013-04-22 18:03:05
【问题描述】:

所以伙计们,我是 Python 中 GUI 的新手,我一直在尝试理解事件过程,这是我的代码,以及每当我按下“a”键时它应该打印“keypressed”的意图。但是它对我不起作用。

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

【问题讨论】:

    标签: events binding python-3.x tkinter key


    【解决方案1】:

    它不执行回调函数,因为程序的焦点在Tk 元素上。如果您将该行替换为root.bind("a", callback),它将按您的预期工作。

    问题是canvas元素在你点击它时不会像其他小部件一样获得焦点作为Entry,所以如果你先调用canvas.focus_set(),它只会响应keydown事件。

    【讨论】:

    • 请注意,您还可以绑定<1> 来执行focus_set,这将允许您在画布中单击然后输入字符。
    猜你喜欢
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    相关资源
    最近更新 更多