我很难让Kivy的滑块识别我的日期值。 以下是代码。
Slider:
min: root.minimumdate()
max: root.maximumdate()
value: root.maximumdate()
pos: root.width/200, root.height/1.159
width: root.width/2.9
height: root.height/10
Minimumdate和maximumdate函数返回格式为(YYYY-MM)的下限和上限日期值;但是,kivy语言似乎无法识别日期值。在将它用作滑块值之前是否需要进行日期转换?
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:0)
Slider接受整数值,因此您应该将日期转换为某种数字时间戳,例如:
import datetime
import time
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.app import App
from kivy.lang import Builder
Builder.load_string('''
<MyWidget>
Slider:
id: slider
min: root.minimumdate()
max: root.maximumdate()
on_value:
date_label.text = root.timestamp_to_datetime(args[1])
Label:
text: root.timestamp_to_datetime(slider.value)
id: date_label
''')
class MyWidget(BoxLayout):
def minimumdate(self):
d = datetime.datetime.now()
return time.mktime(d.timetuple())
def maximumdate(self):
d = datetime.datetime.now() + datetime.timedelta(days=1)
return time.mktime(d.timetuple())
def timestamp_to_datetime(self, timestamp):
return datetime.datetime.fromtimestamp(
int(timestamp)
).strftime('%Y-%m-%d %H:%M:%S')
class TestApp(App):
def build(self):
return MyWidget()
if __name__ == '__main__':
TestApp().run()