使用 '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=True
和 event == '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()
我有一个 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=True
和 event == '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()