键盘模块在Tkinter的第一个事件上未检测到按键



假设您有这样的代码。

def test(widget):
print(keyboard.is_pressed("shift"))
t=tkinter.Tk()
b=tkinter.scrolledtext.ScrolledText()
b.bind("<Return>", test)
b.pack()
t.mainloop()

就在第一次尝试按住shift并按enter时,它会打印False,但之后它工作正常(第一次触发此事件时,如果按住shift,则不会检测到它,但之后会工作(。

如果在tkinter中按下修饰符键,您可以使用@martineau在注释检查中指出的内容:

import tkinter as tk
from tkinter.scrolledtext import ScrolledText
def test(event):
# If you want to get the widget that fired the event, use this:
widget = event.widget
# Check if the shift key is pressed when the event is fired
shift_pressed = bool(event.state & 0x0001)
if shift_pressed:
...
else:
print("Shift isn't pressed.")
root = tk.Tk()
text_widget = ScrolledText(root)
text_widget.bind("<Return>", test)
text_widget.pack()
root.mainloop()

event.state是一个整数,它保存事件触发时按下的不同组合键的标志。& 0x0001检查事件触发时是否按下了换档键。

最新更新