wxpython:guiをスレッディング - >カスタムイベントハンドラーの使用
-
23-09-2019 - |
質問
メインGUIアプリからスレッドを実行して、GUIを生かしながらシリアルポートの送信/受信を行う方法を学ぼうとしています。私の最高のグーグルの試みは、wxpython wikiで私を上陸させました: http://wiki.wxpython.org/longrunningtasks いくつかの例を提供します。特定のボタンが選択されたときにワーカースレッドを起動することを含む、最初の例を学ぶことに落ち着きました。
私はカスタムイベント廃棄物を理解するのに苦労しています:
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)
それは私がそれをより速く理解するのに役立ちません。ありがとう、
解決
変更を加えた後にコンテンツが正しく再インデックスされていますか?バージョンと環境の設定に応じて、コンテンツがクロールされるまで、新しい権限は検索結果に有効になりません。
他のヒント
それがカスタムイベントを定義する古いスタイルです。見る 移行ガイド 詳細については。
移行ガイドから取られた:
独自のカスタムイベントタイプとEVT_*関数を作成し、上記のBINDメソッドでそれらを使用できるようにする場合は、EVT_*を変更する必要があります。
wx.PyEventBinder
関数の代わりに。たとえば、このようなものを持っていた場合:myCustomEventType = wxNewEventType() def EVT_MY_CUSTOM_EVENT(win, id, func): win.Connect(id, -1, myCustomEventType, func)
そのように変更する:
myCustomEventType = wx.NewEventType() EVT_MY_CUSTOM_EVENT = wx.PyEventBinder(myCustomEventType, 1)
これが別の投稿です 私はあなたが探していることを正確に行うプログラムをいくつか模範として作成しました。
1つのオプションは、ファイルを送信する文書ライブラリをENAVEMに有効にしてから、このEメールアドレスを使用してSharePointサーバーを電子メールで送信し、そのレポートをドキュメントライブラリに保存します。私は過去にこのテクニックを統合モードではなくSSRSサーバーを使用してSharePointのスケジュールでレポートを配信しました。
これはあなたのSharePointファームに着信電子メールが設定されていると仮定します。