Python Kivy-在按下按钮时更改按钮颜色
我最近开始使用为我的python应用程序设计GUI。在应用程序中,其中一个操作是使用提供的API向服务器发送请求。经过几次测试后,我注意到只有当我想发出请求时才会发生一件恼人的事情——按下按钮时按钮不会改变颜色(我说的是默认操作)。但是,当使用simplePython Kivy-在按下按钮时更改按钮颜色,python,kivy,Python,Kivy,我最近开始使用为我的python应用程序设计GUI。在应用程序中,其中一个操作是使用提供的API向服务器发送请求。经过几次测试后,我注意到只有当我想发出请求时才会发生一件恼人的事情——按下按钮时按钮不会改变颜色(我说的是默认操作)。但是,当使用simpleprint()时,它会发生变化 我怎么能修好它?有什么想法吗 这是我的测试应用程序的代码: class TestApp(App): def build(self): parent = Widget() b
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
,但在调用之后,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()
此外,不要在按下按钮时使用
,而要在释放按钮时使用。如果我记得正确,可防止意外事件(检查碰撞触摸↔按钮区域)。这很可能是因为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()
此外,不要在按下按钮时使用,而要在释放按钮时使用。如果我记得正确,可防止意外事件(检查碰撞触摸↔按钮区域)。谢谢您的回答,但不幸的是,现在它根本没有触发该方法。按钮正在正确更改颜色。@sebap123请参见编辑。线程防止冻结用户界面。如果请求不起作用,那就是请求/代码的问题。感谢您的回答,但不幸的是,现在它根本没有触发该方法。按钮正在正确更改颜色。@sebap123请参见编辑。线程防止冻结用户界面。如果请求不起作用,那就是请求/代码的问题。