kivy 在小部件上设置大小

kivy set size on widget

我创建了一个 Image 对象,我想设置它的大小,但是我做不到 that.here 是代码,我创建了一个光标对象,它是图像,然后我尝试设置它的大小它,但是 self.size = (10,10) 对它没有影响。为什么它不起作用?

#!/usr/bin/kivy
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image
from kivy.uix.button import Button
from kivy.core.window import Window

class Root(FloatLayout):
    pass

class Cursor(Image):
    def __init__(self, **kwargs):
        super(Cursor, self).__init__(**kwargs)
        self.source = 'crosshair.png'
        self.size = (10,10)        
        self._keyboard = Window.request_keyboard(self._keyboard_closed, self, input_type='text')
        self._keyboard.bind(on_key_down=self._on_keyboard_down)

    def _keyboard_closed(self,**kwargs):
        print "hi"

    def _on_keyboard_down(self,keyboard, keycode, text, modifiers):
        if keycode[1] == 'up': self.y += 10
        elif keycode[1] == 'down': self.y -= 10
        elif keycode[1] == 'left': self.x -= 10
        elif keycode[1] == 'right': self.x += 10


class YardApp(App):
    def build(self):
        layout = Root()
        cursor = Cursor()
        layout.add_widget(cursor)
        return layout


if __name__ == '__main__':
    YardApp().run()

它的父级是一个 FloatLayout,它会根据 pos_hint 和 size_hint 自动设置其子级的大小和位置。要禁用此行为,请设置 self.size_hint = None, None,之后您的手动尺寸设置将生效。