[英]Kivy - changing button color on press
我最近開始使用kivy為我的python應用程序設計GUI。 在應用程序中,操作之一是使用提供的API將請求發送到服務器。 經過幾次測試,我發現只有在我要發出請求時才會發生一件令人討厭的事情-按鈕在按下時不會改變顏色(我說的是默認操作)。 但是,當使用簡單的print()
時,它正在改變。
我該如何解決? 任何想法?
這是我的測試應用程序的代碼:
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)
發生這種情況的原因很可能是UI凍結。 調用了self.add
,但是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
。 如果我沒記錯的話,可以防止意外事件(檢查碰撞觸摸按鈕區域)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.