如何在PySimpleGUI中通过ENTER键触发问候事件?
PySimpleGUI 实现回车键触发事件
要实现按下回车键时执行原Ok按钮的问候逻辑,有两种简单可行的方法:
方法一:启用输入框的键盘事件返回
给输入框添加return_keyboard_events=True参数,让输入框返回键盘按键事件,之后在事件循环中判断是否为回车键(事件标识为'\r'),执行对应逻辑:
import PySimpleGUI as sg layout = [ [sg.I(key='In', return_keyboard_events=True), sg.B('Ok')], [sg.T(enable_events=True, key='T')] ] win = sg.Window("Keyboard Events", layout) while True: event, value = win.read() if event == sg.WIN_CLOSED: break # 同时处理Ok按钮和回车键事件 if event in ('Ok', '\r'): msg = "Hello " + value['In'] win['T'].update(msg) win['In'].update("") win.close()
方法二:绑定回车键到输入框(推荐)
通过bind方法给输入框绑定<Return>事件,指定自定义事件名,这种方式更精准,不会产生多余的键盘事件:
import PySimpleGUI as sg layout = [ [sg.I(key='In'), sg.B('Ok')], [sg.T(enable_events=True, key='T')] ] # 窗口需要添加finalize=True才能在创建后绑定事件 win = sg.Window("Keyboard Events", layout, finalize=True) # 给输入框绑定回车键,触发自定义事件'In_Enter' win['In'].bind('<Return>', '_Enter') while True: event, value = win.read() if event == sg.WIN_CLOSED: break # 处理Ok按钮和绑定的回车事件 if event in ('Ok', 'In_Enter'): msg = "Hello " + value['In'] win['T'].update(msg) win['In'].update("") win.close()
如果需要处理Ctrl+A这类组合键,同样可以用bind方法,比如绑定<Control-a>事件:
win['In'].bind('<Control-a>', '_CtrlA')
之后在事件循环中处理'In_CtrlA'事件即可。
内容的提问来源于stack exchange,提问作者user20012788
相关产品推荐
相关产品推荐

