Kivy - 椭圆小部件中的中心图像

时间:2017-05-26 05:13:15

标签: kivy kivy-language

如何使图像始终位于椭圆小部件的中心?

下面是.py和.kv文件以及带有执行代码结果的屏幕。

我已经尝试了很多方法而且我做不到。有人可以帮我解决这个问题吗?

fab.py

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.core.window import Window
Window.clearcolor = (1, 1, 1, 1)

class Fab(App):
    pass

Fab().run()

fab.kv

Widget:
    canvas:
        Color:
            rgba: 0, 1, 0, 1
        Ellipse:
            pos: self.pos
            size: (dp(48), dp(48))
    Scatter:
        rotation: 45
        Image:
            source: 'plus.png'
            size: 64,64

enter image description here

1 个答案:

答案 0 :(得分:1)

因此,难以做到这一点的一个原因是因为你没有使用特定的小部件来保存你的形状。我真的建议你这样做,因为那时你可以使用小部件的center_xcenter_y属性。因此,使小部件具有与您想要的形状相同的大小和位置,然后只需移动小部件。观察:

Widget:
    Widget: # create a specific widget for the ellipse
        id: ellipse # give an id so we can refer to this widget
        size: (dp(48), dp(48))
        canvas:
            Color:
                rgba: 0, 1, 0, 1
            Ellipse:
            pos: self.pos
            size: self.size

    Scatter:
        size: (dp(48), dp(48))
        rotation: 45
        center_x: ellipse.center_x # refer to the ellipse
        center_y: ellipse.center_y
        Image:
            source: 'plus.png'

如果您真的需要旋转图像,那么使用Scatter并不是最佳选择(例如,您可以将加号从椭圆中拖出)。考虑this线程。