所以,我一直在尝试使用 tkinter 来检查是否按下了特定的键,但我没有找到任何东西,所以我开始想知道这是否不可能。所以,我正在检查是否有人知道一种方法。顺便说一句,我不想使用 pynput 中的侦听器,因为它不能与 tkinter 同时运行。
如果你知道一种方法,并且可以以初学者友好的方式做到这一点,我会经常使用它,但如果你不能,发布就是无论如何,我很感谢你所做的一切:)
我完成的脚本(这就是我想做的):
import tkinter
import pyautogui
root = tkinter.Tk()
root.geometry("1000x500")
def sum():
label = tkinter.Label(root, text="yes")
label.place(x=500, y=250)
def fun(event):
if event.keysym=='b':
pyautogui.moveTo(x=500, y=500)
root.bind("<Key>", fun)
root.mainloop()
将
KeyRelease
或 Key
绑定到函数。当事件发生时,将使用参数调用该函数。该参数将包含有关事件的所有信息。
输出示例:
<KeyPress event state=Mod1|Mod3 keysym=d keycode=68 char='d' x=85 y=111>
现在获取密钥使用
event.keysym
示例程序:
from tkinter import *
def fun(event):
print(event.keysym, event.keysym=='a')
print(event)
root = Tk()
root.bind("<KeyRelease>", fun)
root.mainloop()
如果您只想捕获键盘上的“b”,您也可以简单地按顺序使用
root.bind("<b>", fun)
,而不是root.bind("<Key>", fun)
如果我重写你的代码,它会给出 t
import tkinter
import pyautogui
root = tkinter.Tk()
root.geometry("1000x500")
def sum():
label = tkinter.Label(root, text="yes")
label.place(x=500, y=250)
def fun(event):
pyautogui.moveTo(x=500, y=500)
root.bind("<b>", fun)
root.mainloop()
您可以尝试使用键盘库来检查是否有键盘输入传入。 这是一些示例代码:
import keyboard
# Check if b was pressed
if keyboard.is_pressed('b'):
print('b Key was pressed')