import PySimpleGUI as sg
layout = [[sg.Button("OK1", key='1', bind_return_key=True)],
[sg.Button("OK2", key='2', bind_return_key=True)],
[sg.Button("OK3", key='3', bind_return_key=True)]]
window = sg.Window("Keyboard Test", return_keyboard_events=True).Layout(layout)
while True:
event, values = window.Read()
print(event)
if event == None:
break
当我运行上面的代码并执行鼠标单击操作时,我得到的输出如下所示,
单击控制台中的OK1 按钮打印为: 1
单击控制台中的OK2 按钮打印为: 2
单击控制台中的OK3 按钮打印为: 3
但是,当我执行键盘事件时,我通过键盘的 tab 键访问按钮并通过键盘按该按钮上的Enter 键,它在所有这三个按钮上返回相同的键,
通过 tab 键一个一个地访问这些按钮,然后在每个我得到结果时按 Enter,
在OK1上按 Enter按钮在控制台中打印为: 1
在控制台中按OK2 按钮打印为: 1
在控制台中按OK3 按钮打印为: 1
这不是预期的输出。我想要的它也应该像鼠标点击事件一样打印自己的键。
我的意图是什么:
当用户在 OK1 上按下 Enter 按钮时,它应该打印('Hello, OK1 pressed.')
当用户在 OK2 上按下 Enter 按钮时,它应该打印('Hello, OK2 pressed.')
当用户在 OK3 上按下 Enter 按钮时,它应该打印('Hello, OK3 pressed.')
当用户点击 OK1 时,它应该打印('你好,OK1 被按下。')
当用户点击 OK2 时,它应该打印('Hello, OK2 press.')
当用户点击 OK3 时,它应该打印('Hello, OK3 press.')
如何做到这一点?