私はこれで一日中私の髪を引っ張ってきました。私は忍耐を欠いています。pygtk statusBarはシグナルハンドラから更新されません
基本的に私はgladeから構築されたpygtkプログラムを持っています。メインウィンドウの一番下にはステータスバーがあり、使用状況のエラーや接続されているハードウェアに関するステータスメッセージが表示され、以下の機能が使用されます。したがって、displayErrorの呼び出しはすべて、ユーザーの操作に基づいてオブジェクト内から実行され、すべて動作するように見えます。テストでは、私はdisplayCurrentへの呼び出しを試みました。この問題は、ハードウェアプロセスがdisplayCurrentを使用しようとしたときに発生します。システムが動作する方法は、メインウィンドウクラスのメンバの1人がハードウェアへのインターフェイスオブジェクトです。これには、データを出力するメッセージであるデータを取得するたびにシグナルを送信する、マルチプロセッシングプロセスを使用する別個のプロセスがあります。誰にもアイデアはありますか?私は必要に応じてもっと深く何かを説明することができます。すべての詳細を得るためにポストするコードはたくさんあります。
def displayCurrent(self, message):
print message
if self.lastMess:
self.statusBar.remove(self.normalID, self.lastMess)
self.lastMess = self.statusBar.push(self.normalID, message)
def displayError(self, message, timeout = 5):
"""
Function that takes an error message and raises it to the user via the statusbar
timeout seconds later.
"""
print message
mess = self.statusBar.push(self.urgentID, message)
# clear statusbar
gobject.timeout_add_seconds(timeout, self.clearStatus, self.urgentID, mess)
def clearStatus(self, cID, mID):
#time.sleep(timeout)
self.statusBar.remove(cID, mID)
#print self.statusBar.remove_all(self.urgentID)
print 'popped'
return False