2017-01-16 35 views
0

最近、kivyを使用して、PythonアプリケーションのGUIを設計し始めました。アプリケーションでは、アクションの1つが、提供されたAPIを使用してサーバーにリクエストを送信しています。 2回のテストの後、私はリクエストをしたいときにのみ起こる迷惑なことに気付きました。ボタンはプレス時に色が変わらないようにしました(私はデフォルト動作について話しています)。しかし、簡単なときにはprint()が使用されています。Kivy - プレス上のボタンの色を変更する

どうすれば修正できますか?何か案が?

class TestApp(App): 
    def build(self): 
     parent = Widget() 
     btn = Button(text='Add') 
     btn.bind(on_press=self.add) 
     parent.add_widget(btn) 
     return parent 

    def add(self, obj): 
     print("Adding") 
     request = Request(url, urlencode(post_fields).encode()) 
     urlopen(request) 

答えて

2

UIがフリーズしたので、最も可能性が高いが起こっ:

これは私のテストアプリケーションのコードです。 self.addが呼び出されますが、その直後にUIは要求が完了するまで待機します。

はこのようにそれを行うにしてみてください。また

import threading 

class TestApp(App): 
    def build(self): 
     parent = Widget() 
     btn = Button(text='Add') 
     btn.bind(on_press=self.add) 
     parent.add_widget(btn) 
     return parent 

    def add(self, obj): 
     print("Adding") 
     #self.printer() # freezing 
     threading.Thread(target=self.printer).start() 

    def printer(self, *args): 
     while True: 
      print 'blob' 
TestApp().run() 

、代わりのon_press使用ではなくon_releaseを。正しく覚えていれば、偶発的な事象を防止します(衝突タッチとボタン領域のチェック)。

+0

ありがとうございましたが、残念ながら今ではメソッドを起動していません。ボタンが色を正しく変更しています。 – sebap123

+0

@ sebap123編集を参照してください。スレッドはフリーズUIを防ぎます。リクエストが機能しない場合、それはリクエスト/コードの問題です。 – KeyWeeUsr

+0

それは今作動する!編集していただきありがとうございます。 – sebap123

関連する問題