由于 MDLable ID 没有获取属性如何覆盖这个

Due to MDLable ID does not have get attribute how to override on this

因为我是 python 基维语的新手。这是我的代码:

    from kivy import app
    from kivy.lang import Builder
    from kivymd.app import MDApp
    from kivymd.uix.screen import MDScreen
    from kivy.uix.relativelayout import RelativeLayout
    from kivy.uix.screenmanager import ScreenManager
    from kivy.properties import  ObjectProperty
    from datetime import timedelta 
    from datetime import datetime
    from kivy.clock import Clock
    
    Builder.load_string('''

    <TOolBar_Window>:
    #timeday: timeday
    name:'Main_Window1'
    RelativeLayout:
        MDToolbar:
            title: 'Main_Window1'
            elevation: 10
            right_action_items: [['logout']]
            pos_hint: {"left":1, "top":1}

        MDLabel:
            id: timeday
            #text: "name"
            markup:True
            halign:'center'
            multiline:True
            ''')

    class TOolBar_Window(MDScreen):
    pass  

    class MainApp(MDApp):
        #timeday = ObjectProperty(None)
        def build(self):
       
           self.sm= ScreenManager()
           self.sm.add_widget(TOolBar_Window(name ='tolBar_Window1'))
           return self.sm

        def on_start(self):
             Clock.schedule_interval(self.dell,1)

        def dell(self,nap):
        
           self.nap=datetime.now()
           self.nap = self.nap + timedelta(seconds = 1)
           self.day = self.nap.strftime('%A')
           self.date = self.nap.strftime('%d/%m/%Y')
           self.time = self.nap.strftime('%I:%M:%S')
           self.root.ids.timeday.text = self.day+'\n'+self.date+'\n'+self.time
        if __name__ == '__main__':  
            MainApp().run()

在我的代码中出现如下错误:

self.root.ids.timeday.text = self.day+'\n'+self.date+'\n'+self.time

File "kivy/properties.pyx", line 864, in kivy.properties.ObservableDict.getattr

AttributeError: 'super' object has no attribute 'getattr'

如果我删除这一行:

self.root.ids.timeday.text =self.day+'\n'+self.date+'\n'+self.time

然后代码是 运行,但时间和日期未更新。我也尝试 object 属性 但仍然没有得到相同的错误。我也尝试 parents 小部件但没有使用这个错误:

'super' is substituted with the real value, because well... it doesn't have getattr,To keep my answer brief, here's the minimalistic object that extends Scatter object.,super gives you an access to a class you inherit from,I suspect(not sure) that if you use string as the value for id, you'll end up with weakref / WeakProxy pointing to a string.

问题出在您的 root 小部件上。

from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.screenmanager import ScreenManager
from kivy.properties import  ObjectProperty
from datetime import timedelta 
from datetime import datetime
from kivy.clock import Clock


kv = ('''

<TOolBar_Window>:
    name:'Main_Window1'

RelativeLayout:
    MDToolbar:
        title: 'Main_Window1'
        elevation: 10
        right_action_items: [['logout']]
        pos_hint: {"left":1, "top":1}

    MDLabel:
        id: timeday
        #text: "name"
        markup:True
        halign:'center'
        multiline:True
''')


class TOolBar_Window(MDScreen):
    pass  


class MainApp(MDApp):
    def build(self):
       self.root = Builder.load_string(kv)
       self.sm= ScreenManager()
       self.sm.add_widget(TOolBar_Window(name ='tolBar_Window1'))
       self.root.add_widget(self.sm)
       return self.root

    def on_start(self):
         Clock.schedule_interval(self.dell, 1.0)

    def dell(self,nap):
       self.nap=datetime.now()
       self.nap = self.nap + timedelta(seconds = 1)
       self.day = self.nap.strftime('%A')
       self.date = self.nap.strftime('%d/%m/%Y')
       self.time = self.nap.strftime('%I:%M:%S')
       self.root.ids.timeday.text = self.day+'\n'+self.date+'\n'+self.time


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