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

PySimpleGUI应用快捷键绑定失效:如何实现回车键关闭窗口?

解决PySimpleGUI输入框按回车无法关闭窗口的问题

你的问题根源有两个:一是误用单行输入框sg.Input却设置了多行高度参数,二是默认情况下该组件不会将回车键作为事件返回给窗口的read()方法。以下是两种可行的解决方案:

方案1:使用单行输入框并开启键盘事件返回

修改后的代码:

import PySimpleGUI as sg

init_layout = [
    [sg.Input('', background_color='white', border_width=0, key='-INPUT-', return_keyboard_events=True)]
]

init_window = sg.Window('Enter File Name', init_layout, finalize=True)

while True:
    event, values = init_window.read()
    # 匹配窗口关闭事件或回车键事件
    if event in (sg.WINDOW_CLOSED, '\r', 'Return:13'):
        break

init_window.close()

说明:给sg.Input添加return_keyboard_events=True参数后,键盘按键会作为事件返回,回车键对应的事件标识可以是'\r'或者'Return:13'。

方案2:改用多行输入框(适配你设置的高度需求)

如果确实需要多行输入区域,应该用sg.Multiline替代sg.Input,并绑定回车键事件:

import PySimpleGUI as sg

init_layout = [
    [sg.Multiline('', size=(None,5), background_color='white', border_width=0, key='-MULTILINE-')]
]

init_window = sg.Window('Enter File Name', init_layout, finalize=True)
# 给多行输入框绑定回车键为自定义事件
init_window['-MULTILINE-'].bind('<Return>', '_ENTER')

while True:
    event, values = init_window.read()
    # 匹配窗口关闭事件或绑定的回车自定义事件
    if event in (sg.WINDOW_CLOSED, '-MULTILINE-_ENTER'):
        break

init_window.close()

说明:sg.Multiline默认按回车是换行操作,通过bind方法将回车键映射为自定义事件,就能实现按下回车直接关闭窗口的逻辑。最后记得调用close()释放窗口资源。

内容的提问来源于stack exchange,提问作者AJ gameboy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:28:22