如何解决一遍又一遍地生成相同的 pygame 事件
在我的 pygame 应用程序中,我希望在用户按下 F1 键时打开网络浏览器:
#!/usr/bin/env python3
import pygame as pg
import webbrowser
pg.init()
screen = pg.display.set_mode((400,400))
pg.key.set_repeat(200,100)
while True:
for evt in pg.event.get():
if evt.type == pg.KEYDOWN and evt.key == pg.K_F1:
webbrowser.open('http://some-website.com')
pg.quit()
按 F1 时,浏览器会打开,但如果我不杀死它,我的应用程序会不断打开新标签页。我的猜测是,当我的应用程序由于使用 KEYDOWN
而失去焦点时,会一遍又一遍地生成相同的 pg.key.set_repeat
事件:如果我将此调用注释为 pg.key.set_repeat
则一切正常。
我该如何解决?
使用的版本是:pygame 2.0.1 (SDL 2.0.14,Python 3.9.5)
。
解决方法
您应该像这样使用 keyboard
模块:
import keyboard
# [...]
while True:
# [...]
if keyboard.is_pressed("F1"):
webbrowser.open('http://some-website.com')
pg.quit()
或者你可以在打开特定网站后打破循环:
# [...]
while True:
for evt in pg.event.get():
if evt.type == pg.KEYDOWN and evt.key == pg.K_F1:
webbrowser.open('http://some-website.com')
break
# [...]
pg.quit()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。