メインのGUIアプリからスレッドを実行して、GUIを存続させながらシリアルポートの送受信を行う方法を学ぼうとしています。私の最高のグーグルの試みは、いくつかの例を提供するhttp://wiki.wxpython.org/LongRunningTasksのwxpythonwikiにたどり着きました。私は最初の例を学ぶことに決めました。特定のボタンが選択されたときにワーカースレッドを開始することです。
カスタムイベント定義を理解するのに問題があります。
def EVT_RESULT(win, func):
"""Define Result Event."""
win.Connect(-1, -1, EVT_RESULT_ID, func)
class ResultEvent(wx.PyEvent):
"""Simple event to carry arbitrary result data."""
def __init__(self, data):
"""Init Result Event."""
wx.PyEvent.__init__(self)
self.SetEventType(EVT_RESULT_ID)
self.data = data
主に
def EVT_RESULT(win, func):
"""Define Result Event."""
win.Connect(-1, -1, EVT_RESULT_ID, func)
EVT_RESULTは、両方のクラスで呼び出し可能にするために、クラスの外部に配置されていると思います(グローバルにしますか?)
そして..メインGUIアプリは、以下を介してスレッドの進行状況を監視します。
# Set up event handler for any worker thread results
EVT_RESULT(self,self.OnResult)
また、多くの例で、ライターが
from wx import *
彼らは単に物事をバインドします
EVT_SOME_NEW_EVENT(self, self.handler)
とは対照的に
wx.Bind(EVT_SOME_NEW_EVENT, self.handler)
それは私がそれをより速く理解するのを助けません。ありがとう、