Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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_Kivy_Clock_Kivy Language - Fatal编程技术网

python-kivy:在标签小部件中显示并动态更新当前时间

python-kivy:在标签小部件中显示并动态更新当前时间,python,label,kivy,clock,kivy-language,Python,Label,Kivy,Clock,Kivy Language,我目前正在用python和kivy开发GUI。我的目标是在屏幕上有一个标签/小部件,它可以显示当前时间并自动更新。稍后,我想使用该值(时间)来填充其他输入小部件(“使用当前时间”) 这是屏幕的.kv文件,我想在上面显示时间。 现在,我添加了一个按钮,它将触发my main.py中的函数change\u time,然后使用标签id“current\u time”更新文本/标签。最后,这应该会自动发生,而无需使用按钮 如果运行此命令,则会出现错误“UnboundLocalError:赋值前引用的局部

我目前正在用python和kivy开发GUI。我的目标是在屏幕上有一个标签/小部件,它可以显示当前时间并自动更新。稍后,我想使用该值(时间)来填充其他输入小部件(“使用当前时间”)

这是屏幕的.kv文件,我想在上面显示时间。 现在,我添加了一个按钮,它将触发my main.py中的函数change\u time,然后使用标签id“current\u time”更新文本/标签。最后,这应该会自动发生,而无需使用按钮

如果运行此命令,则会出现错误“UnboundLocalError:赋值前引用的局部变量'time'”。当我在类ClockScreen中定义可变时间时,它会工作,但时间是静态的,只会更新一次(当我运行应用程序时)


如何能够自动更新当前时间,然后在我的时钟屏幕上显示,而不使用按钮调用函数?谢谢

在发布回溯时,请发布完整内容,它几乎肯定包含有价值的调试信息,说明哪些行导致了问题。不要创建与导入模块同名的局部变量(如
time
)。当python在
change\u time()
方法中看到
time=
时,它会创建一个名为
time
的局部变量。然后,当它试图执行
time.asctime()
时,它正在寻找新创建的
time
变量的属性。只需为变量使用不同的名称即可。非常感谢@JohnAnderson-更改变量名称确实解决了问题!
<ClockScreen>:
    FloatLayout:
        #Background color
        canvas:
            Color:
                rgb: utils.get_color_from_hex("#00a7d8")
            Rectangle:
                size: self.size
                pos: self.pos

        #Input-Fields and Labels
        GridLayout:
            cols: 1
            pos_hint: {"top": 1, "right": 1}
            size_hint: 1, .8
            Label:
                id: current_time
                text: "Current Time"
            Button:
                on_press:
                    root.change_time()
            [...]
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
from kivy.uix.button import ButtonBehavior
from kivy.uix.image import Image
from kivy.uix.label import Label
from kivy.clock import Clock
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.spinner import Spinner
from kivy.properties import ObjectProperty
import requests
import time

[...]

class ClockScreen(Screen):
    def change_time(self):
        time = time.asctime()
        current_time = self.ids.current_time
        current_time.text = time
        print(current_time.text)


[...]

GUI = Builder.load_file("main.kv")

class MainApp(App):
                def build(self):
                    return GUI
                def change_screen(self, screen_name):
                    screen_manager = self.root.ids['screen_manager']
                    screen_manager.transition = NoTransition()
                    screen_manager.current = screen_name


MainApp().run() #Um die Mainapp zu starten