title: python kivy AttributeError: 'super' object has no attribute '__getattr__'
body: <p>for a project I'm trying to make a simple GUI which displays some basic information (like time, date, public transport info, some news etc.) To do this I want a Homepage that displays an overview of all these things and a special page for every subject with a detailed view. Python combined with Kivy seemed like the best/easiest solution that looks good and works quite easy. I am however getting a problem with displaying the time. When I try to update the text on the label that displays the time I get an <code>AttributeError: 'super' object has no attribute '__getattr__'</code>, which does not give me much information as to where to look for a solution. Can anyone point out what's wrong?</p>
  
  <p>main.py:</p>
  
  <pre><code>import feedparser
  import time
  from kivy.app import App
  from kivy.lang import Builder
  from kivy.uix.screenmanager import ScreenManager, Screen
  from kivy.uix.anchorlayout import AnchorLayout
  from kivy.properties import NumericProperty, ReferenceListProperty, ObjectProperty, StringProperty
  from kivy.uix.label import Label
  from kivy.uix.widget import Widget
  from kivy.clock import Clock
  
  # Declare widgets
  class DateTime(Widget):
      curtime = StringProperty('')
  
      def update(self, dt):
          self.curtime = time.strftime("%H:%M:%S")
          print self.curtime
          self.ids["kv_timelabel"].text = str(self.curtime)
  
  # Declare all screens
  class HomeScreen(Screen):
      obj_datetime = DateTime()
      Clock.schedule_interval(obj_datetime.update, 1.0 / 10.0)
  
  class NewsScreen(Screen):
      pass
  
  class PublicTransportScreen(Screen):
      pass
  
  class TrafficScreen(Screen):
      pass
  
  class ScreenManagement(ScreenManager):
      pass
  
  class MirrorApp(App):
      def build(self):
          # Create the screen manager
          render = ScreenManagement()
          render.add_widget(HomeScreen(name='home'))
          render.add_widget(TrafficScreen(name='traffic'))
          render.add_widget(PublicTransportScreen(name='public_transport'))
          render.add_widget(NewsScreen(name='news'))
          return render
  
  if __name__ == '__main__':
      MirrorApp().run()
  </code></pre>
  
  <p>mirror.kv:</p>
  
  <pre><code>#:kivy 1.9.0
  
  &lt;HomeScreen&gt;:
      name: 'home'
      obj_datetime: kv_datetime
  
      Button:
          on_release: app.root.current = 'news'
          text: 'News'
          size_hint: 0.5,0.15
          font_size: 50
          pos_hint: {"left":1, "top":0.15}
  
      Button:
          on_release: app.root.current = 'public_transport'
          text: 'Public Transport'
          size_hint: 0.5,0.15
          font_size: 50
          pos_hint: {"left":1, "top":0.3}
  
      Button:
          on_release: app.root.current = 'traffic'
          text: 'Traffic'
          size_hint: 0.5,0.15
          font_size: 50
          pos_hint: {"left":1, "top":0.45}
  
      DateTime:
          id: kv_datetime
          center: self.parent.center
  
  &lt;NewsScreen&gt;:
      name: 'news'
  
      Button:
          on_release: app.root.current = 'home'
          text: 'back to the home screen'
          font_size: 50
  
  &lt;PublicTransportScreen&gt;:
      name: 'public_transport'
  
      Button:
          on_release: app.root.current = 'home'
          text: 'back to the home screen'
          font_size: 50
  
  &lt;TrafficScreen&gt;:
      name: 'traffic'
  
      Button:
          on_release: app.root.current = 'home'
          text: 'back to the home screen'
          font_size: 50
  
  &lt;DateTime&gt;:
      Label:
          id: kv_timelabel
          text:
          font_size: 70  
          center_x: self.parent.center_x
          center_y: self.parent.center_y
  </code></pre>
  
  <p>The error I get when running main.py is (I think the last two lines or so of this error are enough, but you can never be thorough enough):</p>
  
  <pre><code>[INFO   ] [Logger      ] Record log in /home/matthias/.kivy/logs/kivy_16-04-17_97.txt
  [INFO   ] [Kivy        ] v1.9.0
  [INFO   ] [Python      ] v2.7.10 (default, Oct 14 2015, 16:09:02) 
  [GCC 5.2.1 20151010]
  [INFO   ] [Factory     ] 173 symbols loaded
  [INFO   ] [Image       ] Providers: img_tex, img_dds, img_gif, img_sdl2, img_pil (img_ffpyplayer ignored)
  [INFO   ] [Text        ] Provider: sdl2
  [INFO   ] [OSC         ] using &lt;multiprocessing&gt; for socket
  [INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
  [INFO   ] [GL          ] OpenGL version &lt;3.0 Mesa 11.0.2&gt;
  [INFO   ] [GL          ] OpenGL vendor &lt;Intel Open Source Technology Center&gt;
  [INFO   ] [GL          ] OpenGL renderer &lt;Mesa DRI Intel(R) Ivybridge Mobile &gt;
  [INFO   ] [GL          ] OpenGL parsed version: 3, 0
  [INFO   ] [GL          ] Shading version &lt;1.30&gt;
  [INFO   ] [GL          ] Texture max size &lt;8192&gt;
  [INFO   ] [GL          ] Texture max units &lt;16&gt;
  [INFO   ] [Window      ] auto add sdl2 input provider
  [INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
  [INFO   ] [ProbeSysfs  ] device match: /dev/input/event5
  [INFO   ] [MTD         ] Read event from &lt;/dev/input/event5&gt;
  [INFO   ] [Base        ] Start application main loop
  [INFO   ] [GL          ] NPOT texture support is available
  19:39:33
  [INFO   ] [Base        ] Leaving application in progress...
   Traceback (most recent call last):
     File "main.py", line 49, in &lt;module&gt;
       MirrorApp().run()
     File "/usr/lib/python2.7/dist-packages/kivy/app.py", line 824, in run
   Exception in thread Thread-1:
       runTouchApp()
   Traceback (most recent call last):
     File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 487, in runTouchApp
       EventLoop.window.mainloop()
     File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
     File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_sdl2.py", line 525, in mainloop
       self.run()
       self._mainloop()
     File "/usr/lib/python2.7/threading.py", line 763, in run
     File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_sdl2.py", line 290, in _mainloop
       self.__target(*self.__args, **self.__kwargs)
       EventLoop.idle()
     File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 327, in idle
     File "/usr/lib/python2.7/dist-packages/kivy/input/providers/mtdev.py", line 197, in _thread_run
       Clock.tick()
     File "/usr/lib/python2.7/dist-packages/kivy/clock.py", line 483, in tick
       self._process_events()
       _device = Device(_fn)
     File "/usr/lib/python2.7/dist-packages/kivy/clock.py", line 615, in _process_events
     File "/usr/lib/python2.7/dist-packages/kivy/lib/mtdev.py", line 131, in __init__
       self._fd = os.open(filename, os.O_NONBLOCK | os.O_RDONLY)
   OSError: [Errno 13] Permission denied: '/dev/input/event5'
  
       event.tick(self._last_tick, remove)
     File "/usr/lib/python2.7/dist-packages/kivy/clock.py", line 374, in tick
       ret = callback(self._dt)
     File "main.py", line 19, in update
       self.ids["kv_timelabel"].text = str(self.curtime)
   KeyError: 'kv_timelabel'
  </code></pre>
  
  <p>When I replace <code>self.ids["kv_timelabel"].text = str(self.curtime)</code> with <code>self.ids.kv_timelabel.text = str(self.curtime)</code> I get:</p>
  
  <pre><code>[INFO   ] [Logger      ] Record log in 
  /home/matthias/.kivy/logs/kivy_16-04-17_98.txt
  [INFO   ] [Kivy        ] v1.9.0
  [INFO   ] [Python      ] v2.7.10 (default, Oct 14 2015, 16:09:02) 
  [GCC 5.2.1 20151010]
  [INFO   ] [Factory     ] 173 symbols loaded
  [INFO   ] [Image       ] Providers: img_tex, img_dds, img_gif, img_sdl2, img_pil (img_ffpyplayer ignored)
  [INFO   ] [Text        ] Provider: sdl2
  [INFO   ] [OSC         ] using &lt;multiprocessing&gt; for socket
  [INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
  [INFO   ] [GL          ] OpenGL version &lt;3.0 Mesa 11.0.2&gt;
  [INFO   ] [GL          ] OpenGL vendor &lt;Intel Open Source Technology Center&gt;
  [INFO   ] [GL          ] OpenGL renderer &lt;Mesa DRI Intel(R) Ivybridge Mobile &gt;
  [INFO   ] [GL          ] OpenGL parsed version: 3, 0
  [INFO   ] [GL          ] Shading version &lt;1.30&gt;
  [INFO   ] [GL          ] Texture max size &lt;8192&gt;
  [INFO   ] [GL          ] Texture max units &lt;16&gt;
  [INFO   ] [Window      ] auto add sdl2 input provider
  [INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
  [INFO   ] [ProbeSysfs  ] device match: /dev/input/event5
  [INFO   ] [MTD         ] Read event from &lt;/dev/input/event5&gt;
  [INFO   ] [Base        ] Start application main loop
  [INFO   ] [GL          ] NPOT texture support is available
  19:42:01
  [INFO   ] [Base        ] Leaving application in progress...
   Traceback (most recent call last):
     File "main.py", line 49, in &lt;module&gt;
   Exception in thread Thread-1:
   Traceback (most recent call last):
     File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
       self.run()
     File "/usr/lib/python2.7/threading.py", line 763, in run
       MirrorApp().run()
       self.__target(*self.__args, **self.__kwargs)
     File "/usr/lib/python2.7/dist-packages/kivy/app.py", line 824, in run
     File "/usr/lib/python2.7/dist-packages/kivy/input/providers/mtdev.py", line 197, in _thread_run
       runTouchApp()
       _device = Device(_fn)
     File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 487, in runTouchApp
     File "/usr/lib/python2.7/dist-packages/kivy/lib/mtdev.py", line 131, in __init__
       EventLoop.window.mainloop()
       self._fd = os.open(filename, os.O_NONBLOCK | os.O_RDONLY)
     File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_sdl2.py", line 525, in mainloop
   OSError: [Errno 13] Permission denied: '/dev/input/event5'
       self._mainloop()
  
     File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_sdl2.py", line 290, in _mainloop
       EventLoop.idle()
     File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 327, in idle
       Clock.tick()
     File "/usr/lib/python2.7/dist-packages/kivy/clock.py", line 483, in tick
       self._process_events()
     File "/usr/lib/python2.7/dist-packages/kivy/clock.py", line 615, in _process_events
       event.tick(self._last_tick, remove)
     File "/usr/lib/python2.7/dist-packages/kivy/clock.py", line 374, in tick
       ret = callback(self._dt)
     File "main.py", line 19, in update
       self.ids.kv_timelabel.text = str(self.curtime)
     File "kivy/properties.pyx", line 720, in kivy.properties.ObservableDict.__getattr__ (kivy/properties.c:10938)
   AttributeError: 'super' object has no attribute '__getattr__'
  </code></pre>
  
  <p>Note that the code works just fine when I delete the line it mentions in the error.</p>