2016-11-23 109 views
0

我很难让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语言似乎并不认可日期值。在将它用作滑块值之前,我需要做日期转换吗?

任何帮助,将不胜感激。

谢谢!

回答

0

滑块接受整数值,所以你应该将日期转换为某种数字时间戳,例如:

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() 
+0

这是真棒。不幸的是,日期格式不支持原始格式,但是这样做。谢谢! –