使用 'esc' 关闭 PySimpleGUI window

Using 'esc' to close PySimpleGUI window

我有一个 PySimpleGUI window,我想最大化它,最终没有标题栏。我想用 'esc' 键关闭 window.

这是我的(简化)代码:

import msvcrt
import PySimpleGUI as sg

layout = [[sg.Text(size=(40, 1), font=("Arial", (32)), justification='left', key='-TEXT-')]]
window = sg.Window(title="Window", layout=layout, grab_anywhere=True, finalize = True, no_titlebar=False)

window.maximize()

escape = False

while True:

    event, values = window.read()

    if msvcrt.kbhit() and msvcrt.getch() == chr(27).encode():
        escape = True
    else:
        ecape = False

    if event == sg.WIN_CLOSED or event == 'Cancel' or escape == True:
        break

window.close()

关闭按钮工作正常 - 但按退出键没有任何作用。

我尝试了几个答案 here,但没有成功。

出了什么问题,我该如何解决?

已解决。

正如@knosmos 所指出的,getch 仅适用于命令行。添加 return_keyboard_events=Trueevent == 'Escape:27' 就成功了。

绑定事件"<Escape>"到window生成一个事件,

import PySimpleGUI as sg

layout = [[sg.Text(size=(40, 1), font=("Arial", (32)), justification='left', key='-TEXT-')]]
window = sg.Window(title="Window", layout=layout, grab_anywhere=True, finalize = True, no_titlebar=False)
window.maximize()
window.bind("<Escape>", "-ESCAPE-")

while True:
    event, values = window.read()
    if event in (sg.WINDOW_CLOSED, "-ESCAPE-"):
        break
    print(event, values)

window.close()