簡體   English   中英

Kivy-更改按鈕顏色

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM