gpt4 book ai didi

python - Pygame 动画/事件循环和 Flask-socketio

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:02 25 4
gpt4 key购买 nike

作为我的第一个 RPi 项目,我一直在开发一个由 Raspberry Pi 驱动的照相亭,该照相亭通过用户智能手机上的 Web 界面进行控制。

展位本身有一个内置显示屏,有一个 pygame View ,可以在拍照时提供动画指南和倒计时。它使用flask-socketio ( http://flask-socketio.readthedocs.org/en/latest/ ) 来处理客户端连接和用户通过智能手机输入的事件。

Pygame 需要位于应用程序的主线程上,socketio 也是如此,所以我的问题是,如果显示 pygame View ,我无法让 socketio 工作。

我最初的逻辑是让 socketio 事件创建一个像这样的事件:

@socketio.on('connect', namespace'/photo')
def client_connect():
evnt = pygame.event.Event(gui.INFOEVENT, msg="client_connect")
pygame.event.post(evnt)

然后在 pygame 线程中捕获此事件:

running = True
while running:
for event in pygame.event.get():
if (event.type is gui.INFOEVENT and event.msg == "client_connect"):
# welcome client on photobooth screen and start guide

注意:我还没有检查过这方面的语法,它可能是错误的。

有谁知道我如何实现这一目标?如果是这样,我的逻辑是否已经完成了一半?

我正在努力了解线程和队列,虽然我已经学到了很多东西,但这个“有趣”的项目正在慢慢地让我疲惫不堪!非常感谢您的帮助。

-安德鲁

最佳答案

三个问题:

  1. pygame.event.Event 实例没有 tpe 属性。我认为你的意思是:

    if (event.type is gui.INFOEVENT and event.type == client_connect):
  2. pygame 事件(或任何其他 Python 对象)的 type 属性不能同时指向 gui.INFOEVENTclient_connect,除非两者值是相同的(这使得第二次检查变得多余)。
  3. client_connect 作为变量从未在任何地方声明。我认为你的意思是“client_connect”

但是,pygame 事件可以具有与其关联的任意属性,因此您可以通过将 event.type (存储 client_connect)的第二个使用更改为任何其他值来解决第二个问题。

注意:我不熟悉 socketio

关于python - Pygame 动画/事件循环和 Flask-socketio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24493069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com