wxpython GUI から時間のかかるタスクを実行しようとしています。基本的な考え方は、GUI から (ボタンを押して) 長時間のタスクを開始し、ダイアログの静的テキストを GUI から更新することです。
まず、いくつかのスレッド ( http://wiki.wxpython.org/LongRunningTasksおよび他の多くのリソースが表示されます) を試しました。Publisher.class を使用してメッセージを表示したいと思います。うまくいきませんでした。1 つか 2 つのメッセージの後、GUI がフリーズしたようです。
今、私はマルチプロセッシングでそれを達成したいと考えています。「GUI」クラス内にこのメソッドがあります:
def do_update(self, e):
self.txt_updatemsg.SetLabel("Don't stop this \n")
...
pub = Publisher() # i tried also calling directly from dbob object
# Publisher() is a singleton so this must be useless?
pub.subscribe(self.__update_txt_message, ('updatedlg', 'message'))
dbob = dbutils.DBUtils() # DBUtils is the class with 'long time' tasks
dbob.publisher = pub
p = Process(target=self.do_update_process, args=(dbob,))
p.start()
while p.is_alive:
wx.Yield
def do_update_process(self, dbob):
dbob.do_update()
__update_txt_message は、ダイアログに静的テキストを設定する単純な関数です。
質問: このプロセスからテキスト メッセージを送り返すにはどうすればよいですか (単純なテキストだけで十分です) ありがとうございました!