检查 tkinter 中是否按下了特定键

问题描述 投票:0回答:3

所以,我一直在尝试使用 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()
python tkinter
3个回答
10
投票

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


0
投票

如果您只想捕获键盘上的“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()

-1
投票

您可以尝试使用键盘库来检查是否有键盘输入传入。 这是一些示例代码:

import keyboard

# Check if b was pressed
if keyboard.is_pressed('b'):
    print('b Key was pressed')
© www.soinside.com 2019 - 2024. All rights reserved.