0

コマンドラインインターフェイスを使用して、urllib2から8つの異なるサイトにいくつかのパラメーターをPOSTする小さなアプリケーションを作成していますが、wxPythonで使用すると同じことが起こり、アプリケーションがフリーズして応答しません。いくつかのファイルを読んだときに同じことが起こりましたが、wx.Yield() でファイルを読み取るためにそれを克服しましたが、wx.Yield() は URL 要求に対して機能していないようです。

フレームの構築には BOA コンストラクターを使用しています。

プログラムの要点は次のとおりです。

def buildURL(url, params):
    #url built here 
    return url



def url1(self, value):
    #self.buildURL(url, params)
    #makes the request
    #searches if there was a valid response
    #if yes, show it to txtCtrl2

#same for url2 to url8

def onClickCheck(self, event):
    #get the value from txtCtrl1
    #Do the required things
    AppUrlLibrary = [self.url1(value)...self.url8(value)]
    for i in AppUrlLibrary:
        if self.abort:
            break
        else:
            wx.Yield() #this seems not working
            i

これについて助けが必要です。私のコーディング構造が間違っていると強く信じています! ガイドが必要です。

すべての表示と応答は txtCtrl2 に送信されます。ありがとう!

4

1 に答える 1

0

問題は、あなたがしていることが GUI のメインループをブロックしていることです。言い換えれば、それは長時間実行されるタスクです。つまり、これを回避するには、おそらくスレッド、キューなどを使用する必要があります。wx.CallAfter、wx.CallLater、wx.PostEvent の 3 つのスレッドセーフなメソッドがあります。スレッドのいずれかを使用せずに GUI と通信しようとすると、問題が発生します。wxPython wikiにいくつかの例があります。または、私のチュートリアルを読むことができます。

于 2012-08-07T13:38:13.603 に答える