2011-07-13 9 views
2

現在、私はwxPythonでGUIアプリケーションをプログラミングしています。 現在、私は現在のpythonコマンド/要求/タスクを停止する停止ボタンを作成します。eclipseのような終了ボタンを作成する

私はすでにボタン作成:

def StopButton(self, event): 
     sys.exit(0) 

をしかし、それは動作しません。私のプログラムはボタンのクリックを認識しないので、彼は現在のコマンド/リクエスト/タスクでまだビジー状態であるため、反応せず応答しません。

+0

どのようにタスクを呼ぶのですか?あなたは自分の実行を執行するために別のスレッドで呼び出す必要があります。 – marc

答えて

1

GUIアプリケーションのUIは、 main、threadこのスレッドは、GUI要素を初期化してユーザーの入力を待つ。

メインスレッドで他の処理を実行すると、GUI要素はユーザーの入力を受け入れることができない。

Python threadingを見て、そのコンセプトに慣れてください。あなたがしたいことは、あなたの現在の状況を開始するときです。あなたが何をしたいのですか?コマンド/リクエスト/タスクを実行するには、新しいスレッドで起動します。これにより、GUIとのやりとりを継続するときにユーザーの入力を受け入れることができます。

TL; DR:あなたのC/R/T

0

するための独自のスレッドで実行されるすべてのGUIアプリケーションを新しいスレッドを生成。彼らは基本的に無限ループで動いており、ユーザーが応答できる「何か」をするのを待っています。同じスレッドで長時間実行されているプロセスを起動すると、GUIがブロックされ、更新が維持されます。これを回避するには、別のスレッドで長期実行プロセスを実行します。詳細は、次のいずれかの記事を参照してください。

http://wiki.wxpython.org/LongRunningTasks

http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/

関連する問題