我想在一个kivy标签上显示随机生成的数字,这类似于倒计时动画。你知道吗
原型.py(python文件):
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
import random
import time
class RootWidget(BoxLayout):
def do(self):
a = 0
total = 5
user = self.ids.name
while a <= 10:
randnum = random.randrange(total)
user.text = str(randnum)
a+=1
class prototypeApp(App):
def build(self):
return RootWidget()
if __name__ == "__main__":
no=prototypeApp()
no.run()
原型.kv(kv文件):
<RootWidget>:
orientation:'vertical'
Label:
id: name
text:''
font_size:70
height:70
Button:
text:'click me'
on_release:app.root.do()
size_hint_y:.1
没有错误,但在标签上,它只显示最后一个数字 随机生成的数字。 但我希望循环中的数字在标签上流畅地流动,而不是只显示循环中的最后一个数字。你知道吗
do()
方法中的循环在主线程上运行,主线程与更新GUI的线程相同。因为它是单个线程,所以在do()
方法完成之前无法更新GUI,这意味着GUI中只显示最后一个随机数。你知道吗要解决这个问题,请在单独的线程中运行该循环(请参见threading)。您将需要在主线程上执行
self.ids.name.text = str(randnum)
(考虑使用Clock来实现这一点)。你知道吗您可能希望在循环中添加一个sleep,否则可能会发生得太快,无法看到中间数字。你知道吗
相关问题 更多 >
编程相关推荐