鱼C论坛

 找回密码
 立即注册
查看: 90|回复: 3

[已解决]event.num为何会打印“??” 双问号?

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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()


执行上述代码,点击键盘按键室为何会打印双问号?
??
??
??
最佳答案
3 天前
鬼少 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
在你的代码中,你使用的是 `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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-2-26 22:44
在你的代码中,你使用的是 `frame.bind('', callback)`,这会绑定所有的键盘事件,但没有指定具体的键位。
...

我使用的就是 frame.bind('<Key>', callback),为何还是打印双问号??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层    本楼为最佳答案   
鬼少 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-3-1 00:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表