当前位置: 首页 > 面试题库 >

Python Tkinter画布无法绑定键盘

韩飞翮
2023-03-14
问题内容

我一直在运行这样的小脚本

from Tkinter import *
root = Tk()
def callback(event):
    print "callback"
w = Canvas(root, width=300, height=300)
w.bind("<Key>", callback)
w.pack()
root.mainloop()

但是,在我的情况下无法处理键盘事件(我在窗口7上使用python 2.7)

如果我用

w.bind("<Button-1>", callback)

一切正常。

所以,这真的使我感到困惑。请任何人告诉我为什么会这样,谢谢。


问题答案:

仅当具有键盘焦点的小部件获得按键事件时,按键绑定才会触发。默认情况下,画布 不会
获得键盘焦点。您可以使用该focus_set方法使其重点突出。通常,您可以在鼠标按钮上进行绑定。

将以下绑定添加到您的代码中,然后在画布上单击,您的键绑定将开始工作:

w.bind("<1>", lambda event: w.focus_set())


 类似资料:
  • 问题内容: 我正在尝试在JPanel上的Java中进行键绑定。我希望在按下“ w”按钮时执行某些操作。我遵循Java教程进行绑定,但是actionPerformed方法不执行(即,没有文本打印出来)。以下是我的测试GUI的全部代码,并突出显示了相关部分: 永远不会打印文本“ test”。我已经尝试了很多次,使用了许多不同的变体,不同的键,并且确保面板聚焦,但没有运气。我究竟做错了什么? 问题答案:

  • 问题内容: 如果我使用画布显示数据,并且希望用户能够单击 在画布上的各种项目上,以获取更多信息或进行交互 从某种程度上来说,最好的办法是什么? 在网上搜索我可以找到有关如何将事件绑定到标记的信息,但是 这似乎比我想要的更间接。我不想对项目分组 使用标记,但在用户单击时有特定的函数调用 画布上的特定项目。 问题答案: 要与“Canvas”对象中包含的对象交互,您需要使用 格式如下: item参数可以

  • 07-24 12:36:23.742: W/System.err(10386):java.io.IO异常:拒绝许可07-24 12:36:23.750: W/System.err(10386): atjava.io.File.createNewFileImpl(本地方法)07-24 12:36:23.750: W/System.err(10386): atjava.io.File.createNe

  • 当我试着运行appium时,突然遇到了这个错误。 错误:处理命令时发生未知的服务器端错误。原始错误:执行adbExec时出错。原始错误:“Command”C:\Users\vsingh\AppData\Local\Android\Sdk\platform tools\adb。exe-P 5037-s emulator-5554转发tcp:8200 tcp:6790'已退出,代码为1';斯特德:亚行

  • 问题内容: 我需要绑定所有箭头键以执行相同的功能,但是每次获取按下哪个键时。目前我只有通过以下方式按下向右箭头键时才有 但是我需要这样的东西 问题答案: 您要问的实际上是违反直觉的,并且违背了键绑定API的设计。 目的是为每个按键提供单个工作单元。在我看来,这建议您应为每个箭头键分别执行操作。 它使您更容易遵循逻辑,进行更改,根据需要规避操作。 但是我是谁呢? 如果看不到它,一种简单的方法就是为每

  • 问题内容: 我想在我的应用程序中的任何位置(Control + S)触发保存操作。我已经添加了必要的键绑定,并且该操作将按预期触发。但是,如果我在JTable上尝试Control + S,则该表将启动我的自定义操作并激活该表单元格以进行编辑。我想我已经在表格的输入映射中禁用了编辑操作。我在这里想念什么? 问题答案: 像@Guillaume一样,我运行您的代码没问题。您可能会在这里讨论过无意中失败的