Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 KeyError?_Python_Python 3.x_Kivy_Kivy Language - Fatal编程技术网

Python 为什么我的代码会出现Kivy KeyError?

Python 为什么我的代码会出现Kivy KeyError?,python,python-3.x,kivy,kivy-language,Python,Python 3.x,Kivy,Kivy Language,我正在尝试创建一个简单的登录,并在下一个屏幕上显示当前时间,但我不明白为什么我一直收到这个错误 *.py文件 from kivy.app import App from datetime import datetime from datetime import timedelta from kivy.clock import Clock from kivy.uix.label import Label from kivy.uix.boxlayout import BoxLayout from k

我正在尝试创建一个简单的登录,并在下一个屏幕上显示当前时间,但我不明白为什么我一直收到这个错误

*.py文件

from kivy.app import App
from datetime import datetime
from datetime import timedelta
from kivy.clock import Clock
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen


class test(BoxLayout):
    pass

class blank_page(Screen):
    pass

class ScreenManagement(ScreenManager):
    pass

kv = Builder.load_file("delete.kv")
class MyApp(App):
    def build(self):

        self.now = datetime.now()
        Clock.schedule_interval(self.update_clock, 1)
        self.my_label = Label(text= self.now.strftime('%H:%M:%S'))
        return kv

    def update_clock(self, *args):
        self.now = self.now + timedelta(seconds = 1)
        self.root.ids['my_label'].text = self.now.strftime('%H:%M:%S')
        print(self.now.strftime('%H:%M:%S'))

MyApp().run()

*.kv文件


#:kivy 1.0
#:import hex kivy.utils.get_color_from_hex
ScreenManagement:
    test:
    blank_page:
<test>:
    BoxLayout:
        orintation: 'vertical'
        Label:
            text: 'test_label'
<blank_page>:
    BoxLayout:
        orientation:'vertical'
        Label:
            id: my_label
        Button:
            text:'next'
            on_release: app.root.current = "blank_page"

这是因为
my\u label
不是根用户的id,而是
blank\u page

您可以通过参考
空白页面
来解决此问题。
我会这样做。
页面设置为空白
作为根目录的对象属性

千伏:

正如所指出的那样:

引用小部件 在小部件树中,通常需要访问/引用其他小部件 小部件。Kv语言提供了一种使用id实现这一点的方法。思考 它们中的一个作为类级变量,只能在Kv中使用 语言。考虑以下事项:

<MyFirstWidget>:
    Button:
        id: f_but
    TextInput:
        text: f_but.state

<MySecondWidget>:
    Button:
        id: s_but
    TextInput:
        text: s_but.state
:kivy 1.0
#:导入hex kivy.utils.get\u color\u从\u hex
屏幕管理:
空白页:
名称:“空白页”
屏幕:
名称:“下一页”
测试:
:
盒子布局:
方向:“垂直”
标签:
文本:“测试标签”
:
盒子布局:
方向:'垂直'
标签:
我的标签
按钮:
正文:“下一步”
发布时:app.root.current=“下一页”
ScreenManagement:
    bp: bp
    test:
    blank_page:
        id: bp
<test>:
    BoxLayout:
        orintation: 'vertical'
        Label:
            text: 'test_label'
<blank_page>:
    BoxLayout:
        orientation:'vertical'
        Label:
            id: my_label
        Button:
            text:'next'
            on_release: app.root.current = "blank_page"
class MyApp(App):

    def build(self):

        self.now = datetime.now()
        Clock.schedule_interval(self.update_clock, 1)
        self.my_label = Label(text= self.now.strftime('%H:%M:%S'))
        return kv

    def update_clock(self, *args):
        self.now = self.now + timedelta(seconds = 1)
        self.root.bp.ids['my_label'].text = self.now.strftime('%H:%M:%S')
        print(self.now.strftime('%H:%M:%S'))
<MyFirstWidget>:
    Button:
        id: f_but
    TextInput:
        text: f_but.state

<MySecondWidget>:
    Button:
        id: s_but
    TextInput:
        text: s_but.state
#:kivy 1.0
#:import hex kivy.utils.get_color_from_hex


ScreenManagement:
    Blank_Page:
        name: "blank_page"
    Screen:
        name: "next_page"
        Test:

<Test>:
    BoxLayout:
        orientation: 'vertical'
        Label:
            text: 'test_label'

<blank_page>:
    BoxLayout:
        orientation:'vertical'
        Label:
            id: my_label
        Button:
            text:'next'
            on_release: app.root.current = "next_page"