Pythonを用いてマルチスレッドでUDPで通信し,受信したデータをTkinterで生成したGUI上に表示したいと考えています.
マルチスレッドのUDP通信は
http://blog.amedama.jp/entry/2017/03/29/080000
上記サイト様の『マルチスレッド(スレッドプール』のコードを実行しており,受信データをPython IDLEのコンソールに表示させることは出来ました.
次にGUIを表示させようと以下のコードを記述して実行致しました.
python
1 root = tkinter.Tk() 2 root.title(u"UDP GUI Test") 3 root.geometry("400x300") 4 5 root.mainloop() 6 7 main()
main()の内容は以下になります.上記サイト様のコードそのままです.
python
1def main(): 2 serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 3 4 serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) 5 6 host = '192.168.10.114' 7 port = 8080 8 serversocket.bind((host, port)) 9 10 serversocket.listen(128) 11 12 # ワーカースレッドを起動する 13 NUMBER_OF_THREADS = 10 14 for _ in range(NUMBER_OF_THREADS): 15 thread = threading.Thread(target=worker_thread, args=(serversocket, )) 16 thread.daemon = True 17 thread.start() 18 19 while True: 20 # メインスレッド 21 time.sleep(1)
上記を実行すると,Windowは表示されましたが,UDPの受信は動作しなくなりました.
Windowを閉じると,UDPの受信が開始されました.
恐らくですが,GUIのLoopとUDPのLoopがあり,最初にGUIのLoopが実行されているため,UDPのLoopが実行されていないから上記のような現象になるのだと思います.
どのようにすればUDPの受信データをGUI上に表示出来るようになるでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/29 23:57