2016-10-31 150 views
1

私はマルチスクリーンアプリを作ろうとしていて、それらのすべてに日付/時刻ラベルが必要です。 1秒ごとにテキスト値を更新するclockイベントを作成しました。スクリーンマネージャーを使ってkivyラベルを更新する

クロックイベントは動作していますが、これはPythonコンソールでは更新されていますが、ラベルは更新されていないため、初めて動作します。 画面を更新するにはどうすればよいですか?

main.pyファイル:

import kivy 
import time 
from kivy.app import App 
from kivy.uix.label import Label 
from kivy.config import Config 
from kivy.core.window import Window 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.lang import Builder 
from kivy.clock import Clock 

kivy.require("1.9.1") 
Window.size = (1280,1024) 
Config.set('graphics', 'fullscreen', '0') 

class TimeLabel(Label): 
    def __init__(self, **kwargs): 
     super(TimeLabel, self).__init__(**kwargs) 
     self.text= str(time.asctime()) 

    def update(self, *args): 
     self.text = str(time.asctime()) 
     print self.text 


class LoginScreen(Screen): 
    pass 


class MainScreen(Screen): 
    pass 


class ScreenManagement(ScreenManager): 
    pass 


class My1App(App): 
    def build(self): 
     my1sm = Builder.load_file("main.kv") 
     crudeclock = TimeLabel() 
     Clock.schedule_interval(crudeclock.update, 1) 
     return my1sm 


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

とmain.kvファイル:あなたはラベルがインスタンス化されるときschedule_intervalを設定する必要が

#: kivy 1.9 
#: import ScreenManager kivy.uix.screenmanager.ScreenManager 
#: import Screen kivy.uix.screenmanager.ScreenManager 
#: import FadeTransition kivy.uix.screenmanager.FadeTransition 

ScreenManagement: 
    transition: FadeTransition() 
    MainScreen: 
    LoginScreen: 


<MainScreen>: 
    name: 'main' 
    size_hint: (1, 1) 
    FloatLayout: 
     Image: 
      source: './background.png' 
      size: 1280,1024 
    TimeLabel: 


<LoginScreen>: 
    name: 'loginS' 
    FloatLayout: 
     Image: 
      source: './Login.png' 
      size: 1280,1024 
    TimeLabel: 


<TimeLabel>: 
    x:-545 
    y:-475 
    color: (0,0,0,1) 

答えて

1

import kivy 
import time 
from kivy.app import App 
from kivy.uix.label import Label 
from kivy.config import Config 
from kivy.core.window import Window 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.lang import Builder 
from kivy.clock import Clock 

kivy.require("1.9.1") 
Window.size = (600,600) 
Config.set('graphics', 'fullscreen', '0') 

class TimeLabel(Label): 
    def __init__(self, **kwargs): 
     super(TimeLabel, self).__init__(**kwargs) 
     self.text= str(time.asctime()) 
     Clock.schedule_interval(self.update,1) 

    def update(self, *args): 
     self.text = str(time.asctime()) 
     print self.text 


class LoginScreen(Screen): 
    pass 


class MainScreen(Screen): 
    pass 


class ScreenManagement(ScreenManager): 
    pass 


class My1App(App): 
    def build(self): 
     my1sm = Builder.load_file("main.kv") 
     crudeclock = TimeLabel() 
     return my1sm 


if __name__ == '__main__': 
    My1App().run() 
+0

それは働いた。ありがとうございました!! – ait

関連する問題