[英]Pygame animation/event loop and flask-socketio
我一直在研究Raspberry Pi驱动的照相亭,这是我的第一个RPi项目,通过用户智能手机上的Web界面进行控制。
展位本身有一个内置的显示屏,该显示屏具有pygame视图,可以在拍照时提供动画指导和倒计时。 它使用flask-socketio( http://flask-socketio.readthedocs.org/en/latest/ )处理客户端连接,并通过智能手机从用户输入事件。
Pygame需要位于应用程序的主线程上,socketio也是如此,所以我的问题是,如果显示pygame视图,我将无法使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
注意:我还没有检查语法,这可能是错误的。
有谁知道我将如何实现这一目标? 如果是这样,我的逻辑是否就此存在?
我努力使自己陷入困境,虽然我学到了很多东西,但是这个“有趣”的项目正在慢慢让我失望! 非常感谢您的帮助。
-安德鲁
三个问题:
pygame.event.Event
实例没有tpe
属性。 我想你的意思是:
if (event.type is gui.INFOEVENT and event.type == client_connect):
gui.INFOEVENT
和client_connect
,除非两个值相同(这使第二个检查变得多余)。 client_connect
作为变量永远不会在任何地方声明。 我认为您的意思是"client_connect"
。 但是,pygame事件可以具有与之相关的任意属性,因此您可以通过将event.type
(存储client_connect的第二种用法)更改为任何其他值来解决问题二。
注意:我不熟悉socketio
最后,我找不到答案,但这就是我决定要做的。
我决定不使用单独的库(例如pygame)在photobooth本身上创建GUI,而要使用所有复杂的线程和诸如此类的东西,而是决定在我的socketio应用程序中创建一个单独的路由,该路由将在Raspberry Pi本身的信息亭模式浏览器中加载在运行时。
从那里开始,我的意图是当用户使用智能手机(通过索引路径)与展位进行交互并将事件发送回服务器(RPi)时,服务器将处理这些交互并将事件另外发送到本地GUI通过不同的名称空间。
这些事件可以在“本地GUI”上触发动画,过渡或倒计时等。
唯一的问题可能是性能和流畅的动画,因为该界面需要运行浏览器,而当有多个用户连接到展位时,这个问题就可以解决(尽管如果两个用户本身在展位中可能会出现硬件问题)客户尝试同时访问摄像机,但这是另一个故事!)
最好
安德鲁
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.