2016-11-23 10 views
0

Ich habe Schwierigkeiten, Kivys Schieberegler zu bekommen, um meine Datumswerte zu erkennen. Unten ist der Code.Datum in Kivy Sprache

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 und maximumdate Funktionen geben meine untere und obere Schranke Datumswerte formatiert (YYYY-MM); kivy Sprache scheint jedoch die Datumswerte nicht zu erkennen. Gibt es eine Datumsumwandlung, bevor ich sie als Schiebereglerwerte verwenden kann?

Jede Hilfe wäre willkommen.

Danke!

Antwort

0

Slider akzeptieren Integer-Werte, so dass Sie Ihre Daten zu irgendeiner Art von numerischen Zeitstempel, zum Beispiel konvertieren sollte:

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

Das ist genial. Es ist bedauerlich, dass das Datumsformat nicht in seiner ursprünglichen Form unterstützt wird, aber das wird reichen. Vielen Dank! –