2017-11-26 4 views
0

Ich versuche, eine einfache Stoppuhr in Kivy zu bauen und ich würde gerne die interruptible clock verwenden, um ein Intervall korrekt zu erstellen, das 1/100 einer Sekunde verfolgt (Die normale Uhr ist nicht genau genug, scheint es). Aber ich kann nicht wirklich herausfinden, wie man die interruptible clock richtig integriert.Wie man die inturuptible kivy Uhr benutzt?

Ich habe versucht, auf ihn zu lesen und versuchte, diese

class TimerApp(App): 
    def build_config(self, config): 
     config.setdefaults('section1', { 
      'KIVY_CLOCK': 'interrupt' 
     }) 

    def build(self): 
     config = self.config 
     return AppLayout() 

Dies ist jedoch nicht die Clock.schedule_interval funtion überhaupt zu ändern schien. Was wäre der richtige Weg dazu und wie kann ich überprüfen, ob die Einstellung geändert wurde?

Antwort

1

Die folgenden Beispiele versuchen, den Unterschied zu beschreiben:

Hinweis: ich das Timeout auf 1 s eingestellt (1000 ms) für diesen Test

Mit der Voreinstellung:

from kivy.app import App 
from kivy.clock import Clock 
from kivy.uix.boxlayout import BoxLayout 
import time 

t = int(round(time.time() * 1000)) #current time in millisecond 


def call_back(dt): 
    global t 
    t1 = int(round(time.time() * 1000)) 
    print t1 - t 
    t = t1 

clock = Clock.schedule_interval(call_back, 1) 


class TimerApp(App): 

    def build(self): 
     return BoxLayout() 

if __name__ == '__main__': 
    TimerApp().run() 

der Ausgang ist:

1002 
1003 
1006 
1004 
1006 
1005 
1004 
1001 
1003 
1002 
1003 

Wie Sie die Ausgabe immer sehen kann (fast)> 1000 Millisekunden

Mit der Unterbre config:

... 
from kivy.config import Config 

... 
class TimerApp(App): 

    def build(self): 
     Config.set('graphics', 'KIVY_CLOCK', 'interrupt') 
     Config.write() 
     return BoxLayout() 
... 

und der Ausgang ist:

997 
998 
1000 
1000 
998 
998 
1000 
1001 
1000