[英]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.