【发布时间】:2022-01-21 06:54:44
【问题描述】:
我正在尝试构建一个“Key-Test”程序,它应该显示一个键是否有效。 (我来自自定义键盘社区)
我的代码在“esc”和“F1”-“F12”上运行良好,但在“PrintScreen”下它不起作用。我不知道为什么它适用于所有其他键而不适用于 printscreen。 这是相关段落中的代码sn-p:
from tkinter import *
window = Tk()
c = Canvas(window, width=1135, height=300, bg="lavender")
c.pack()
#Create the rectangle for PrintScreen, ScrollLock and Pause
key13 = c.create_rectangle(772.5, 10, 812.5, 50, fill="white") #PrintScreen
key14 = c.create_rectangle(822.5, 10, 862.5, 50, fill="white") #ScrollLock
key15 = c.create_rectangle(872.5, 10, 912.5, 50, fill="white") # Pause
#(german) Text for each Key
text13 = c.create_text(791, 20, text="Druck", font=('Helvetica', '8'))
text14 = c.create_text(841, 20, text="Rollen", font=('Helvetica', '8'))
text15 = c.create_text(891, 20, text="Pause", font=('Helvetica', '8'))
#event functions
def key_event13(event):
c.itemconfig(key13, fill="DarkSeaGreen2")
def key_event14(event):
c.itemconfig(key14, fill="DarkSeaGreen2")
def key_event15(event):
c.itemconfig(key15, fill="DarkSeaGreen2")
#bind the keys
c.bind_all("<KeyPress-Print>", key_event13)
c.bind_all("<KeyPress-Scroll_Lock>", key_event14)
c.bind_all("<KeyPress-Pause>", key_event15)
window.mainloop()
我已经试过了
c.bind_all("event.keysym_num == 65377", key_event13)
而不是
c.bind_all("<KeyPress-Print>", key_event13)
这也不行……
我希望这里有人可以帮助我。 最好的问候西蒙
【问题讨论】:
-
我怀疑您的操作系统正在处理该按键本身,甚至没有将其传递给应用程序。
-
您可以确定 tkinter 是否对该键做出反应。执行
root.bind("<Key>", lambda e: print(e.keysyms)并按下打印屏幕按钮。 -
我用以下小程序进行了尝试:codespeedy.com/detect-keypress-in-tkinter-in-python tkinker 无法识别“PrintScreen”-Key...但是它的工作原理,我在一个密钥测试网站上对其进行了测试...
标签: python tkinter key-bindings