AttributeError:' super'对象没有属性' __ getattr __' [英] AttributeError: 'super' object has no attribute '__getattr__'

查看:112
本文介绍了AttributeError:' super'对象没有属性' __ getattr __'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在整个互联网上寻找该问题的解决方案,但仍然找不到正确的解决方案.有很多通用的答案,但没有一个能解决我的问题.

I've been searching for the solution of this problem over the all internet but I still can't find the right solution. There are lots of generic answers but none of those have solved my problem..

我正在尝试使用kivy和python 3.6.4构建简单的CLOCK应用,但是每次运行 main.py 时,都会出现此错误:

I am trying to build a simple CLOCK app with kivy and python 3.6.4 but every time I run the main.py I get this error:

AttributeError:超级"对象没有属性" getattr "

我的主要"main.py"文件为:

 from kivy.app import App

 from kivy.clock import Clock

 from kivy.core.text import LabelBase

 from kivy.core.window import Window

 from kivy.utils import get_color_from_hex

 from time import strftime


 class ClockApp(App):

    def on_start(self):
        Clock.schedule_interval(self.update, 0)

    def update(self, nap):

        self.root.ids.time.text = strftime('[b]%H[/b]:%M:%S')


 if __name__ == '__main__':
     Window.clearcolor = get_color_from_hex('#101216')
     LabelBase.register(name='Roboto',
                        fn_regular='Roboto-Thin.ttf',
                        fn_bold='Roboto-Medium.ttf')
     ClockApp().run() 

我的"clock.kv"文件为:

 <Label>:
     font_name: 'Roboto'
     font_size: 60
     markup: True

 BoxLayout:
     orientation: 'vertical'

 Label:
     id: time
     text: '[b]00[/b]:00:00'

这是我运行"main.py"时出现的错误

[INFO   ] [Logger      ] Record log in C:\Users\Alessandro\.kivy \logs\kivy_18-05-19_4.txt
[INFO   ] [Kivy        ] v1.10.0
[INFO   ] [Python      ] v3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [OSC         ] using <thread> for socket
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.4.0 - Build 20.19.15.4549'>
[INFO   ] [GL          ] OpenGL vendor <b'Intel'>
[INFO   ] [GL          ] OpenGL renderer <b'Intel(R) HD Graphics 5500'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 4
[INFO   ] [GL          ] Shading version <b'4.40 - Build 20.19.15.4549'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Shader      ] fragment shader: <b"WARNING: 0:7: '' :  #version directive missing">
[INFO   ] [Shader      ] vertex shader: <b"WARNING: 0:7: '' :  #version directive missing">
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop
[INFO   ] [Base        ] Leaving application in progress...
     Traceback (most recent call last):
       File "kivy\properties.pyx", line 836, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:12509)
 KeyError: 'time'

 During handling of the above exception, another exception occurred:
  Traceback (most recent call last):
   File "C:\Users\Alessandro\Desktop\Clock\main.py", line 24, in <module>
     ClockApp().run()
   File "C:\Users\Alessandro\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\app.py", line 828, in run
     runTouchApp()
   File "C:\Users\Alessandro\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\base.py", line 504, in runTouchApp
     EventLoop.window.mainloop()
   File "C:\Users\Alessandro\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 663, in mainloop
     self._mainloop()
   File "C:\Users\Alessandro\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\core\window\window_sdl2.py", line 405, in _mainloop
     EventLoop.idle()
    File "C:\Users\Alessandro\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\base.py", line 339, in idle
     Clock.tick()
   File "C:\Users\Alessandro\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\clock.py", line 581, in tick
     self._process_events()
   File "kivy\_clock.pyx", line 367, in kivy._clock.CyClockBase._process_events (kivy\_clock.c:7700)
   File "kivy\_clock.pyx", line 397, in kivy._clock.CyClockBase._process_events (kivy\_clock.c:7577)
   File "kivy\_clock.pyx", line 395, in kivy._clock.CyClockBase._process_events (kivy\_clock.c:7498)
   File "kivy\_clock.pyx", line 167, in kivy._clock.ClockEvent.tick (kivy\_clock.c:3490)
   File "C:\Users\Alessandro\Desktop\Clock\main.py", line 16, in update
     self.root.ids.time.text = strftime('[b]%H[/b]:%M:%S')
   File "kivy\properties.pyx", line 839, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:12654)
 AttributeError: 'super' object has no attribute '__getattr__'

推荐答案

.kv的结构看起来不正确,例如,观察到有很多根会导致另一个问题,因此如果您想要告诉您问题原因的答案,您应该改进缩进.

The structure of your .kv does not look correct, for example it is observed that there are many roots that would cause you another problem, so if you want a response that tells you the reason for your problem you should improve your indentation.

相反,我将向您显示一个正确的.kv,其中根目录为BoxLayout,您的孩子为ID时间为Label的标签:

Instead I'll show you a correct .kv where the root will be the BoxLayout and your child the Label with id time:

clock.kv

<Label>:
    font_name: 'Roboto'
    font_size: 60
    markup: True

BoxLayout:
    orientation: 'vertical'

    Label:
        id: time
        text: '[b]00[/b]:00:00'

main.py

from kivy.app import App
from kivy.clock import Clock
from kivy.core.text import LabelBase
from kivy.core.window import Window
from kivy.utils import get_color_from_hex
from time import strftime


class ClockApp(App):
    def on_start(self):
        Clock.schedule_interval(self.update, 0)

    def update(self, *args):
        self.root.ids.time.text = strftime('[b]%H[/b]:%M:%S')

if __name__ == '__main__':
    Window.clearcolor = get_color_from_hex('#101216')
    LabelBase.register(name='Roboto', fn_regular='Roboto-Thin.ttf', fn_bold='Roboto-Medium.ttf')
    ClockApp().run() 

这篇关于AttributeError:&amp;#39; super&amp;#39;对象没有属性&amp;#39; __ getattr __&amp;#39;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆