0

wxApp で 2 つの wx.TextCtrl ウィジェットを使用しています。
最初のものは、アプリ ユーザーが Python コードを提供するために使用されます。

from time import sleep  
for i in range(4):  
    print i  
    sleep(4)  

2 番目のものは、出力を表示するために使用されます。
ユーザー コードを処理するには、EXEC を使用します。
しかし、出力を動的に表示する際に問題があります。

現在、出力は 2 番目の wx.TextCtrl ウィジェットに表示されますが、コード全体が処理された後 (16 秒後) に表示されます。

上記のコードで4秒ごとにユーザーのコード出力を表示したいと思います。どうやってするか?

スレッドを使用しようとしていましたが、スレッドの場合に exec を使用すると問題が発生します。

4

1 に答える 1

0

time.sleep は GUI のメイン ループをブロックするため、出力が表示されません。そのルートに行きたい場合は、それを別のスレッドに入れる必要があります。それ以外の場合は、wx.Timer を使用できます。

ここにチュートリアルがあります: http://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/

ただし、Python の exec コマンドを使用する必要はないと思います。これにより、コード インジェクションの問題が発生する可能性があります。代わりに、subprocess モジュールの使用を検討する必要があります。

于 2013-02-06T14:36:27.363 に答える