Python Kivy:pos_hint =(x.x,x.x) - >错误

时间:2015-06-24 12:10:09

标签: python compiler-errors tuples kivy

正如标题中所提到的,当我在Python-Kivy上给出一个pos_hint元组时,我遇到了一个错误。一个例子:

__version__ = "1.0"
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout

class NumTouch(App):
     def build(self):
          self.root = FloatLayout()
          self.count = 0
          self.btn = Button(text="0x pressed", background_color=(2,2,2,0.1))
          self.root.add_widget(self.btn)
          self.btn.size_hint = (0.5, 0.25)
          self.btn.pos_hint = (0.5, 0.25) #<- important
          self.btn.bind(on_press=self.clicked)
          return self.root

     def clicked(self, widget):
          self.count += 1
          widget.text = str(self.count)+"x pressed"

NumTouch().run()

错误说:

Traceback (most recent call last):
   File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
   File "/home/d0nkey/Scripts/App/main.py", line 21, in <module>
     self.run()
     NumTouch().run()
   File "/usr/lib/python2.7/threading.py", line 763, in run
   File "/usr/lib/python2.7/dist-packages/kivy/app.py", line 600, in run
     self.__target(*self.__args, **self.__kwargs)
     runTouchApp()
   File "/usr/lib/python2.7/dist-packages/kivy/input/providers/mtdev.py", line 192, in _thread_run
   File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 454, in runTouchApp
     _device = Device(_fn)
     EventLoop.window.mainloop()
   File "/usr/lib/python2.7/dist-packages/kivy/lib/mtdev.py", line 131, in __init__
   File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py", line 325, in mainloop
     self._fd = os.open(filename, os.O_NONBLOCK | os.O_RDONLY)
     self._mainloop()
 OSError: [Errno 13] Permission denied: '/dev/input/event7'
   File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py", line 231, in _mainloop

     EventLoop.idle()
   File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 294, in idle
     Clock.tick()
   File "/usr/lib/python2.7/dist-packages/kivy/clock.py", line 370, in tick
     self._process_events()
   File "/usr/lib/python2.7/dist-packages/kivy/clock.py", line 481, in _process_events
     if event.tick(self._last_tick) is False:
   File "/usr/lib/python2.7/dist-packages/kivy/clock.py", line 280, in tick
     ret = callback(self._dt)
   File "/usr/lib/python2.7/dist-packages/kivy/uix/floatlayout.py", line 92, in do_layout
     for key, value in c.pos_hint.iteritems():
 AttributeError: 'tuple' object has no attribute 'iteritems'

我不理解,对我来说似乎毫无意义的是,它在pos_hint但在size_hint处出错,即使它几乎相同;或至少相同的结构...... 正如你所看到的,当你引用它时,它肯定是由pos_hint线引起的。 如果您了解错误,或知道如何解决问题,请告诉我。 谢谢:))

1 个答案:

答案 0 :(得分:1)

pos_hint实际上是一本字典,例如:

widget = Widget(pos_hint={'top': 0.9})