python - Pyglet 窗口在运行后不会重新打开
问题描述
我制作了一个 Snake 游戏程序,并制作了一个名为的函数Starting_screen()
,它打开一个带有标签和精灵的窗口,显示游戏的开始菜单,玩家可以选择开始新游戏、查看排行榜或退出游戏.
我的主要问题是,在玩家完成 Snake 游戏后,我希望程序返回主菜单,但游戏退出后它只是挂起。我尝试print
在函数中放置语句Starting_Screen()
,它实际上打印了两次,表明它重新进入函数但没有再次打开窗口。程序的流程看起来有点像这样(更简单的意义上):
正在运行的游戏main.py
有:
import interface
import engine
interface.main()
print('outside the interface.main()')
interface.main()
如您所见,我刚开始尝试放置两个interface.main()
函数,以便检查程序是否运行第二个函数。它实际上打印了表明它退出函数的语句。
interface.main()
仅运行,Starting_screen()
并且Starting_screen()
看起来像这样(简化):
def Starting_screen():
print('inside starting screen')
window = pyglet.window.Window()
some_text = pyglet.text.Label()
some_image = pyglet.image.load()
@window.event
def on_draw():
window.clear()
some_text.draw()
some_image.draw()
@window.event
def on_key_press(symbol,modifier):
if symbol == key.P:
window.close()
engine.main()
pyglet.app.run()
并且engine.main()
只是运行游戏(使用pygame
)直到玩家输了,它pygame.display.quit()
会终止engine.main()
函数并返回到,Starting_screen()
而后者又会终止函数。
我希望它会再次打开主菜单窗口,但它没有。但有趣的是,它运行print('inside starting screen')
了两次,表明它再次运行该函数,但它并没有像第一次运行时通常发生的那样打开窗口。
任何建议,将不胜感激。
解决方案
推荐阅读
- python - 有没有办法创建一个熊猫数据框,其行是整数,直到每行达到某个值为止?
- email - 对于邮件,“format=fixed”是“format=flowed”的有效/标准对应物吗?
- node.js - GCP Cloud Functions 不寻找 function.js
- java - 如何在类上使用具有不同参数的抽象方法?
- python-3.x - Python - 检查进程(Python3 脚本)是否正在运行
- angular - 当机器人访问站点 Angular2 时,规范元标记使用 http 而不是 https 呈现
- javascript - Websocket客户端重新连接空闲连接
- php - 产品页面中的 ACF 分类图像
- google-bigquery - BigQuery CLI:我可以将所有负载作业类型列出到特定数据集吗?
- java - JNDI 参考+RMI,加载远程.class 失败