以Kivy语言的日期

时间:2016-11-23 19:47:58

标签: python date kivy

我很难让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语言似乎无法识别日期值。在将它用作滑块值之前是否需要进行日期转换?

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 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()