我在使用Scatter(FloatView)的边界框功能时遇到了一些问题。我的构建代码是;
MapPopup = Popup(title='Map')
def openMap(self):
box = BoxLayout(orientation='vertical')
stack = StackLayout(orientation='tb-lr', padding=0, spacing=1)
grid = GridLayout(orientation='vertical', cols=1)
button = Button(markup=True,bold=True,text='B\nA\nC\nK',width=40,size_hint_x=None)
button.bind(on_press=partial(self.backButton))
stack.add_widget(button)
source = os.path.join(os.getcwd(), 'Games', str(CURRENT_GAME[0]), 'map.png')
if os.path.isfile(source):
img = PILImage.open(source)
width, height = img.size
scatter = Scatter(size_hint=(None, None), size=(width,height), auto_bring_to_front=False, bbox=((10,10),(10,10)))
image = Image(source=source, size=(width,height))
scatter.add_widget(image)
grid.add_widget(scatter)
else:
label = Label(text="Please Start/Load a Game")
grid.add_widget(label)
stack.add_widget(grid)
box.add_widget(stack)
Container.MapPopup.content = box
Container.MapPopup.open()
我在bbox=((?,?),(?,?))
放入的值无关紧要我收到了错误;
TypeError: 'NoneType' object is not callable
删除bbox
并且一切正常,但我正在容纳的图像溢出弹出框。我不想使用scale=
调整图片大小。
来自文档:
bbox Added in 1.0.0
Bounding box of the widget in parent space:
((x, y), (w, h))
我认为我的问题是它是scatter.scatter.bbox
而不是scatter.bbox
,因为ScatterLayout实现了FloatLayout,Scatter实现了ScatterLayout,或类似的东西 - 任何人都可以帮助?
非常感谢!
完全追溯;
Traceback (most recent call last):
File "main.py", line 1069, in <module>
TextGameTopiaApp().run()
File "/usr/lib/python2.7/dist-packages/kivy/app.py", line 792, in run
runTouchApp()
File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 481, in runTouchApp
EventLoop.window.mainloop()
File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py", line 381, in mainloop
self._mainloop()
File "/usr/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py", line 287, in _mainloop
EventLoop.idle()
File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 324, in idle
self.dispatch_input()
File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 309, in dispatch_input
post_dispatch_input(*pop(0))
File "/usr/lib/python2.7/dist-packages/kivy/base.py", line 275, in post_dispatch_input
wid.dispatch('on_touch_up', me)
File "_event.pyx", line 316, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:4550)
File "/usr/lib/python2.7/dist-packages/kivy/uix/behaviors.py", line 110, in on_touch_up
self.dispatch('on_release')
File "_event.pyx", line 312, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:4504)
File "/usr/lib/python2.7/dist-packages/kivy/lang.py", line 1299, in custom_callback
exec(__kvlang__.co_value, idmap)
File "./textgametopia.kv", line 258, in <module>
on_release: root.openMap()
File "main.py", line 311, in openMap
scatter = Scatter(size_hint=(None, None), size=(width,height), auto_bring_to_front=False, bbox=((10,10),(10,10)))
File "/usr/lib/python2.7/dist-packages/kivy/uix/scatter.py", line 363, in __init__
super(Scatter, self).__init__(**kwargs)
File "/usr/lib/python2.7/dist-packages/kivy/uix/widget.py", line 163, in __init__
super(Widget, self).__init__(**kwargs)
File "_event.pyx", line 156, in kivy._event.EventDispatcher.__init__ (kivy/_event.c:3184)
File "properties.pyx", line 345, in kivy.properties.Property.__set__ (kivy/properties.c:3589)
File "properties.pyx", line 1219, in kivy.properties.AliasProperty.set (kivy/properties.c:19329)
TypeError: 'NoneType' object is not callable