You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:10:31