我做了一个硬币翻转按钮,在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"
我想要做的是,在Label中显示结果,然后在第二次将Label文本设置为" &#34 ;.这是我尝试过的,但我只是将函数调用延迟,标签文本直接设置为" "
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 = " "
答案 0 :(得分:4)
切勿在事件驱动的框架(例如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
配对。