8
レイアウトの中に円を中心に配置しようとしています。私は現在、いくつかのパディング計算を行っていますが、私はまた、より良い方法を探していて、あらかじめ定義されたレイアウトの1つが良い選択かもしれないと想像してください。ここに私のコードは、正方形のレイアウトのために...Kivyでオブジェクトの中心を合わせる
を生産しているものです。広いレイアウトの
:
ので、これは素晴らしいですが、右の行動であり、 。しかし、より良い方法がありますか? (私は、これは例えば、非円形形状で乱雑になっ想像することができます)
ここに私のコードです:
#!/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:FloatLayout
、size_hint
とpos_hint
を使用して
#:kivy 1.7.2
#:import kivy kivy
<RootLayout>:
anchor_x: 'center' # I think this /is/ centered
anchor_y: 'center'
canvas.before:
Color:
rgba: 0.4, 0.4, 0.4, 1
Rectangle:
pos: self.pos
size: self.size
Circley:
anchor_x: 'center' # this is /not/ centered.
anchor_y: 'center'
canvas.before:
Color:
rgba: 0.94, 0.94, 0.94, 1
Ellipse:
size: min(self.size), min(self.size)
pos: 0.5*self.size[0] - 0.5*min(self.size), 0.5*self.size[1] - 0.5*min(self.size)
Label:
text: unicode(self.size) # this is /not/ appearing
color: 1,0,0,1