前提・実現したいこと
現在pythonを用いてセンサーの情報によって人の動きを検知するシステムを作っています.
そのためwxpythonでスレッドを用いてGUIを表示するクラスとセンサーのデータをリアルタイムで受け取るクラスを並列で動かして,センサーデータによってGUIのテキストの表示を変えることを目的としています.
発生している問題・エラーメッセージ
初歩的な問題で申し訳ないのですが,class:sensorで作った値iをclass:GUIにおくってそのiの値によってtext1のラベルが自動で変わっていくために,どのモジュールやメソッドを用いればよいのかが日本語の文献は乏しく,英語の文献ではコードが長すぎてどの部分がスレッド間の通信を行っているのかがわからなかったです.
該当のソースコード
python
1import smtplib 2from email.mime.text import MIMEText 3import wx 4import time 5from threading import Thread 6 7#表示メインフレーム 8class GUI: 9 def __init__(self): 10 self.application = wx.App() 11 self.frame = wx.Frame(None, wx.ID_ANY, 'TOTO', size=(300, 200)) 12 self.frame.Center() 13 self.frame.SetBackgroundColour('#FFFFFF') 14 15 #パネル 16 self.display= wx.Panel(self.frame, wx.ID_ANY,size=(300,100),pos=(0,0)) 17 self.display.SetBackgroundColour('#FFFAF0') 18 self.status='vacant' 19 self.text1=wx.StaticText(self.display,wx.ID_ANY,self.status) 20 font=wx.Font(20,wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL) 21 self.text1.SetFont(font) 22 self.text1.Center() 23 24 self.reservation=wx.Panel(self.frame,wx.ID_ANY,size=(300,100),pos=(0,100)) 25 self.button_1 = wx.Button(self.reservation, wx.ID_ANY, 'reserve',size=(100,50)) 26 self.button_1.SetFont(font) 27 self.button_1.Bind(wx.EVT_BUTTON,self.click) 28 self.frame.Show() 29 self.application.MainLoop() 30 31 def click(self,event): 32 if self.status=='vacant': 33 self.text1.SetLabel('reserved') 34 self.button_1.Disable() 35 36#データ受け渡し 37class sensor(Thread): 38 def __init__(self): 39 Thread.__init__(self) 40 self.setDaemon(True) 41 self.start() 42 43 def run(self): 44 self.i=0 45 while 1: 46 self.i=self.i+1 47 time.sleep(1) 48 print(self.i) 49 50sensor=sensor() 51GUI=GUI()
試したこと
pubsubによるsendMessage
PostEvent
ともにサンプルのコードのどこを変えれば自分のプログラムにあてはめられるのかわかりませんでした.
補足情報(FW/ツールのバージョンなど)
IDE Pycharm
python 3.4
wxpython
threading.Thread
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。