Pysimplegui 和 Pygame 合并
Pysimplegui and Pygame merge
您好,我正在尝试将 pygame 程序与 pysimplegui 合并。
我正在寻找一种抓住键盘按键下击键的方法。目前无论我在做什么,我都只能看到按键的上击。
我已经成功创建了 pysimplegui 程序,但这是我第一次尝试与 pygame 合并。
window 由
设置
window = sg.Window('UNICHALL V2.0',
Win_layout,
border_depth =20,
resizable = True,
keep_on_top = False,
finalize=True,
return_keyboard_events=True,
use_default_focus=False)
在我的 pygame 程序中我使用
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
stop = pygame.time.get_ticks()
delta = stop - start
key = event.key
if key == 27:
sys.exit(1) ...
我无法让这两者协调工作,它们要么在内部永远循环,要么干脆停止程序。
感谢任何帮助。
如果您只需要检测何时按下和释放按键,请尝试绑定事件 '<KeyPress>'
和 '<KeyRelease>'
,而不是设置 sg.Window
的选项 return_keyboard_events=True
。
示例代码
import PySimpleGUI as sg
layout = [
[sg.InputText('', key='-INPUT-')],
[sg.Button('Add Binding'), sg.Button('Remove Binding')],
]
window = sg.Window('Test Program', layout, finalize=True)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event in ('Press', 'Release'):
e = window.user_bind_event
action = 'pressed' if event == 'Press' else 'released'
print(f'char:{repr(e.char)} | keycode:{e.keycode} | keysym:{e.keysym} | keysym_num:{e.keysym_num} {action}')
elif event == 'Add Binding':
window.bind("<KeyPress>", "Press")
window.bind("<KeyRelease>", "Release")
elif event == 'Remove Binding':
window.TKroot.unbind("<KeyPress>")
window.user_bind_dict.pop("<KeyPress>", None)
window.TKroot.unbind("<KeyRelease>")
window.user_bind_dict.pop("<KeyRelease>", None)
window.close()
您好,我正在尝试将 pygame 程序与 pysimplegui 合并。
我正在寻找一种抓住键盘按键下击键的方法。目前无论我在做什么,我都只能看到按键的上击。
我已经成功创建了 pysimplegui 程序,但这是我第一次尝试与 pygame 合并。
window 由
设置window = sg.Window('UNICHALL V2.0',
Win_layout,
border_depth =20,
resizable = True,
keep_on_top = False,
finalize=True,
return_keyboard_events=True,
use_default_focus=False)
在我的 pygame 程序中我使用
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
stop = pygame.time.get_ticks()
delta = stop - start
key = event.key
if key == 27:
sys.exit(1) ...
我无法让这两者协调工作,它们要么在内部永远循环,要么干脆停止程序。
感谢任何帮助。
如果您只需要检测何时按下和释放按键,请尝试绑定事件 '<KeyPress>'
和 '<KeyRelease>'
,而不是设置 sg.Window
的选项 return_keyboard_events=True
。
示例代码
import PySimpleGUI as sg
layout = [
[sg.InputText('', key='-INPUT-')],
[sg.Button('Add Binding'), sg.Button('Remove Binding')],
]
window = sg.Window('Test Program', layout, finalize=True)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif event in ('Press', 'Release'):
e = window.user_bind_event
action = 'pressed' if event == 'Press' else 'released'
print(f'char:{repr(e.char)} | keycode:{e.keycode} | keysym:{e.keysym} | keysym_num:{e.keysym_num} {action}')
elif event == 'Add Binding':
window.bind("<KeyPress>", "Press")
window.bind("<KeyRelease>", "Release")
elif event == 'Remove Binding':
window.TKroot.unbind("<KeyPress>")
window.user_bind_dict.pop("<KeyPress>", None)
window.TKroot.unbind("<KeyRelease>")
window.user_bind_dict.pop("<KeyRelease>", None)
window.close()