Python 画布强制更新不工作

Python 画布强制更新不工作,python,canvas,kivy,Python,Canvas,Kivy,我正在为Kivy中的一个小部件提供刷卡功能。我不会改变它的位置或设置它的动画,而是滑动会激发小部件的画布根据滑动的长度和方向改变颜色和alpha。创建此项不是问题。 我的问题在于现场润色活动。我希望这次活动将alpha设置为100%,并在清理画布之前保持半秒钟。在运行一些测试之后,画布更新似乎受到on_touch_事件的实际生命周期的约束;也就是说:这个该死的东西在事件结束之前不会更新。我试过三种不同的方法,都没有用 if/else序列在三个代码示例中保持不变,因此我将其从项目符号2和项目符号3

我正在为Kivy中的一个小部件提供刷卡功能。我不会改变它的位置或设置它的动画,而是滑动会激发小部件的画布根据滑动的长度和方向改变颜色和alpha。创建此项不是问题。
我的问题在于现场润色活动。我希望这次活动将alpha设置为100%,并在清理画布之前保持半秒钟。在运行一些测试之后,画布更新似乎受到on_touch_事件的实际生命周期的约束;也就是说:这个该死的东西在事件结束之前不会更新。我试过三种不同的方法,都没有用

if/else序列在三个代码示例中保持不变,因此我将其从项目符号2和项目符号3中排除:

  • 通过self.canvas.ask_update()强制更新

  • 创建类级矩形对象并更改其值

    def on_touch_up(self, touch):
        ...
    
        self.rect.pos = self.pos
        self.rect.size = self.size
        sleep(0.50)
        self.canvas.clear()
    
注意:如果我删除最后一个self.canvas.clear(),我看到的是释放触摸后的半秒暂停,然后我得到了我想要的100%alpha。有什么想法吗

def on_touch_up(self, touch):
    ...

    with self.canvas:
        Callback(self.update_final)
    sleep(0.50)
    self.canvas.clear()

def update_final(self, instr):
    self.canvas.add(Rectangle(pos=self.pos, size=self.size))
def on_touch_up(self, touch):
    ...

    self.rect.pos = self.pos
    self.rect.size = self.size
    sleep(0.50)
    self.canvas.clear()