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

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

如标题中所述,在 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 行引起的。 如果您了解错误,或者知道如何解决问题,请告诉我。 谢谢:)

pos_hint其实就是一个字典,例如:

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