python - Kivy:设置标签文本然后在一秒钟后更改它

标签 python kivy

我做了一个硬币翻转按钮,在 Label 中显示结果,每次按下按钮时,结果都会根据函数变化。

def coin_flip(self):
    sound_1 = SoundLoader.load('coin.wav')
    res = random.randint(1,2)
    if sound_1:
        sound_1.play()
    if res == 1:
        self.coin_f_result.text = "HEAD"
    else:
        self.coin_f_result.text = "TAIL"

我想做的是,在标签中显示结果,然后在一秒钟后将标签文本设置为“”。这是我尝试过的,但我只得到函数调用延迟,标签文本直接设置为“”。

def coin_flip(self):
    sound_1 = SoundLoader.load('dice.wav')
    res = random.randint(1,2)
    if sound_1:
        sound_1.play()
    if res == 1:
        self.coin_f_result.text = "HEAD"
        time.sleep(1)
        self.coin_f_result.text = " "
    else:
        self.coin_f_result.text = "TAIL"
        time.sleep(1)
        self.coin_f_result.text = " "

最佳答案

切勿在事件驱动框架(如 kivy)中使用 time.sleep()。它只是阻止执行,正如您所见,事件没有得到处理。使用 Clock.schedule_once()反而。例如,在具有 coin_flip 方法的同一个类中,定义

def reset_label(self, *args):
    self.coin_f_result.text = ' '

并在 coin_flip() 的末尾写入

Clock.schedule_once(self.reset_label, 1)

为了平滑过渡,您可以将其与 Animation 配对,也是。

关于python - Kivy:设置标签文本然后在一秒钟后更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35391458/

相关文章:

android - 如何使用kivy从TextInput写入并保存到文本文件中

python - 基维 : BoxLayout containing horizontal BoxLayout

android - 如何在 Windows 中使用 Python-for-Android 创建一个包?

python - Kivy - 在其他屏幕中创建的访问实例

python - 使用不带菜单项的快捷键表

python - 函数 scipy.optimize.minimize 的选项

python - 使用 Python 和 BeautifulSoup,仅选择未包含在 <a> 中的文本节点

python - 使用 OpenCV 和 Python 进行相机姿态估计

python - Django collectstatic --no input Yes 而不是 no

Python/Kivy - 使用手机屏幕方向更改屏幕(android)