【发布时间】:2018-10-06 07:18:29
【问题描述】:
我在 Kivy 中制作了一个简单的计时器程序和一个带有标签和按钮的框布局。每当按下按钮时,我都希望计时器启动并且标签显示经过的时间。我遵循了本教程: https://www.youtube.com/watch?v=cggCobcS3vU 然后在代码中添加了一些我自己的东西,但标签只显示.kv文件中设置的初始文本。有什么办法吗?
timer.py
import time
from kivy.app import App
from kivy.uix.label import Label
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.widget import Widget
from kivy.properties import StringProperty, ObjectProperty
class MyApp(BoxLayout):
def __init__(self, **kwargs):
super(MyApp, self).__init__(**kwargs)
self.output = ''
def update_label(self):
self.lbl1.text = str(self.output)
def count(self, *varargs):
timeLoop = True
Sec = 0
Min = 0
Hrs = 0
while timeLoop == True:
self.update_label()
print(str(self.output))
Sec += 1
time.sleep(1)
if Sec == 60:
Sec = 0
Min += 1
if Min == 60:
Min = 0
Hrs += 1
if Sec <= 9 and Min <=9 and Hrs <= 9:
self.output = '0' + str(Hrs) +'.'+ '0' + str(Min) + "." + '0' + str(Sec)
elif Sec <= 9 and Min <=9 and Hrs >=9:
self.output = str(Hrs) + '.'+ '0' + str(Min) + "." + '0' + str(Sec)
elif Sec <= 9 and Min >=9 and Hrs >=9:
self.output = str(Hrs) + '.'+ str(Min) + "." + '0' + str(Sec)
elif Sec >= 9 and Min >=9 and Hrs >=9:
self.output = str(Hrs) + '.'+ str(Min) + "." + str(Sec)
elif Sec >= 9 and Min >=9 and Hrs <=9:
self.output = '0' + str(Hrs) +'.'+ str(Min) + "." + str(Sec)
elif Sec >= 9 and Min <= 9 and Hrs <=9:
self.output = '0' + str(Hrs) +'.'+ '0' + str(Min) + "." + str(Sec)
elif Sec >= 9 and Min <=9 and Hrs >= 9:
self.output = str(Hrs) +'.'+ '0' + str(Min) + "." + str(Sec)
elif Sec <= 9 and Min >= 9 and Hrs <=9:
self.output = '0' + str(Hrs) +'.'+ str(Min) + "." + '0' + str(Sec)
class MainApp(App):
def build(self):
c = MyApp()
return c
if __name__ == '__main__':
MainApp().run()
mainapp.kv
<MyApp>:
lbl1: label1
BoxLayout:
size: root.size
Button:
id: button1
text: "Change text"
on_press: root.count()
Label:
id: label1
text: "hi"
我知道这一点:How to change text of a label in the kivy language with python
还有这个:https://groups.google.com/forum/#!topic/kivy-users/mdqPQYBWEU8
但似乎都不适合我。
【问题讨论】:
标签: python timer label kivy updating