2016-11-23 99 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

這是真棒。不幸的是,日期格式不支持原始格式,但是這樣做。謝謝! –