在Kivy中使物体居中

2024-10-06 11:20:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在布局中居中一个圆。我正在做一些填充计算,但我也在寻找更好的方法。我想其中一个预定义的布局可能是更好的选择。下面是我的代码生成的。。。在

对于方形布局:

enter image description here

对于宽布局:

enter image description here

这是正确的行为,这很好,但是还有更好的方法吗?例如,我可以想象非圆形形状会变得一团糟。在

我的代码是:

#!/usr/bin/kivy
import kivy
kivy.require('1.7.2')

from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.relativelayout import RelativeLayout
from kivy.graphics import Color, Ellipse, Rectangle

class MinimalApp(App):
    title = 'My App'
    def build(self):
        root = RootLayout()
        return(root)

class RootLayout(AnchorLayout):
    pass

class Circley(RelativeLayout):
    pass

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

以及KV:

^{pr2}$

Tags: 方法fromimportapprandompassroot布局
1条回答
网友
1楼 · 发布于 2024-10-06 11:20:49

使用FloatLayoutsize_hintpos_hint的代码段:

from kivy.app import App
from kivy.lang import Builder

kv = '''
FloatLayout:
    Widget:
        size: min(root.size), min(root.size)
        size_hint: None, None
        pos_hint: {'center_x': .5, 'center_y': .5}
        canvas:
            Color:
                rgb: 1, 0, 0
            Ellipse:    
                size: self.size
                pos: self.pos
'''
Builder.load_string(kv)

class MyApp(App):
    def build(self):
        return Builder.load_string(kv)

MyApp().run()

日本国旗:

^{pr2}$

相关问题 更多 >