event.num为何会打印“??” 双问号?
from tkinter import *root= Tk()
def callback(event):
print(event.num)
frame=Frame(root,width=200,height=200)
frame.bind('<Key>',callback)
frame.focus_set() # 使frame获得键盘焦点
frame.pack()
mainloop()
执行上述代码,点击键盘按键室为何会打印双问号?
??
??
?? 在你的代码中,你使用的是 `frame.bind('', callback)`,这会绑定所有的键盘事件,但没有指定具体的键位。
当你按下键盘上的某个键时,`event.num` 可能无法识别这个键,从而导致打印出双问号“??”。
要解决这个问题,你可以将`frame.bind`改成绑定具体的键盘事件,比如 `<Key>` 或 `<Button-1>`。以下是修改后的代码:
from tkinter import *
root = Tk()
def callback(event):
print(event.num)
frame = Frame(root, width=200, height=200)
frame.bind('<Key>', callback)
frame.focus_set()# 使frame获得键盘焦点
frame.pack()
mainloop()
这样,当你按下键盘上的一个键时,`event.num` 会打印对应的数字。如果需要捕捉鼠标点击事件,可以改用 `<Button-1>` 之类的事件。
如果还有其他疑问,欢迎继续提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-2-26 22:44
在你的代码中,你使用的是 `frame.bind('', callback)`,这会绑定所有的键盘事件,但没有指定具体的键位。
...
我使用的就是 frame.bind('<Key>', callback),为何还是打印双问号?? 鬼少 发表于 2025-02-26 22:52
FishC 发表于 2025-2-26 22:44
在你的代码中,你使用 ...
根据你提供的信息,可能是由于`event.num`在某些键盘事件中无法识别或解析特定的键。因此,打印出双问号“??”。
为了确保你能正确地捕获到事件并理解其信息,可以尝试使用其它属性,例如 `event.keysym` 来替代 `event.num`。`event.keysym`会给出具体按键的符号名称,这样可以更直观地查看到具体是什么键。
以下是修改后的代码:
from tkinter import *
root = Tk()
def callback(event):
print(event.keysym)
frame = Frame(root, width=200, height=200)
frame.bind('<Key>', callback)# 捕获键盘事件
frame.focus_set()# 使frame获得键盘焦点
frame.pack()
mainloop()
这样,当你按下键盘上的一个键时,`event.keysym` 会打印出对应的键符号。
如果你仍然希望继续使用 `event.num`,请检查以下几点:
1. 确保你按下的是鼠标按键,而不是键盘按键。
2. 使用 `frame.bind('<Button>', callback)` 来捕获鼠标按键事件。
from tkinter import *
root = Tk()
def callback(event):
print(event.num)
frame = Frame(root, width=200, height=200)
frame.bind('<Button>', callback)# 捕获鼠标按键事件
frame.focus_set()# 使frame获得键盘焦点
frame.pack()
mainloop()
通过这种方式,你可以捕获鼠标按键点击的事件,并正确打印出按键的数字编号。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]