【发布时间】:2020-08-29 03:16:29
【问题描述】:
我在禁用 kivy 库中的按钮时遇到问题。当我禁用按钮时,它根本不会禁用。它以某种奇怪的方式等待。
让我给你看我的代码:
import kivy
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
import time
class MainApp(App):
def build(self):
self.l = FloatLayout()
b = Button(text="BUTTON", pos_hint={"top":0.8, "right": 0.8}, size_hint=(0.6, 0.6))
b.bind(on_press=self.press)
self.l.add_widget(b)
return self.l
def press(self, btn):
btn.disabled = True
time.sleep(3.0)
btn.disabled = False
app = MainApp()
app.run()
当我按下按钮时,我想禁用它 3 秒。但不是它程序“冻结”(不禁用按钮),然后在 3 秒后做按下动画(按钮闪烁蓝色)。当然,由于 time.sleep(3.0),程序必须“冻结”,但是在禁用按钮之后(必须是灰色的,但它不会改变颜色......)
如何解决?如果我把 time.sleep() 放在那里代替循环(大约有 1000 万个循环)来模仿程序“做某事”,它的行为方式相同......
那么我该如何解决呢?如何禁用kivy中的按钮,然后做一些事情,完成后再次启用按钮?
谢谢!
编辑:我的问题不是,该程序冻结了 3 秒。我知道调用 time.sleep() 是阻塞的。我不明白为什么按钮在睡眠之前(和期间)没有被禁用......
【问题讨论】:
标签: python python-3.x user-interface kivy