WX Python GUI を実行するメイン スレッドがあります。メイン GUI は、スクリプト (Python 関数にマップされている) を選択するためのグラフィカル インターフェイスと、選択したスクリプトを実行するための 2 番目のスレッド (スレッド #2) を生成する [開始] ボタンをユーザーに提供します。私が抱えている問題は、新しい WX GUI (GUI2) をポップアップして、ユーザーがデータを入力できるようにすることができないことです。
# Function that gets invoked by Thread #2
def scriptFunction():
# Code to instantiate GUI2; GUI2 contains wx.TextCtrl fields and a 'Done' button;
# When 'Done' button is clicked, data entered in fields are process and second GUI is destroyed
gui2Frame = Gui2Frame(None, "Enter Data Gui")
gui2Frame.Show(True)
# This is where I need help. Cannot figure out how to pend for user input;
# In this example; my 'Done' button sets the Event flag
verifyEvent = threading.Event()
verifyEvent.wait(10)
# Process entered data time
processData()
現在、この方法では GUI2 が 10 秒間ロックされます。生成されたスレッドがロックされているため、これは理にかなっています。time.sleep() を使用して while ループを実装すると、同じことが行われます。GUI2を処理するためだけに3番目のスレッドを生成することを検討しましたが、GUI2をアクティブに保つ方法がわからないことに戻りました。助言がありますか?また、マルチスレッド アーキテクチャを 1 つのスレッドに変更することについては、推奨しないでください。ありがとうございました。