Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用屏幕管理器更新kivy标签_Python_Label_Refresh_Screen_Kivy - Fatal编程技术网

Python 使用屏幕管理器更新kivy标签

Python 使用屏幕管理器更新kivy标签,python,label,refresh,screen,kivy,Python,Label,Refresh,Screen,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 k

我正在尝试制作一个多屏幕应用程序,我想在所有的应用程序上都有一个日期/时间标签。 我制作了一个时钟事件,每秒更新文本值

时钟事件正在工作,因为在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()
以及主.kv文件:

#: 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)
:kivy 1.9
#:导入ScreenManager kivy.uix.ScreenManager.ScreenManager
#:导入屏幕kivy.uix.screenmanager.screenmanager
#:导入FadeTransition kivy.uix.screenmanager.FadeTransition
屏幕管理:
转换:FadeTransition()
主屏幕:
登录筛选:
:
名称:'main'
大小提示:(1,1)
浮动布局:
图片:
来源:“./background.png”
尺寸:12801024
时间标签:
:
名称:“登录”
浮动布局:
图片:
来源:“./Login.png”
尺寸:12801024
时间标签:
:
x:-545
y:-475
颜色:(0,0,0,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()