Tôi đang cố gắng căn giữa vòng tròn bên trong bố cục. Tôi hiện đang làm một số tính toán đệm, nhưng tôi cũng đang tìm kiếm một cách tốt hơn, và tưởng tượng một trong những bố trí được xác định trước có thể là một lựa chọn tốt hơn. Đây là những gì mã của tôi được sản xuất ...Định tâm một đối tượng trong Kivy
Đối với bố trí vuông:
Đối với bố trí rộng:
Vì vậy, đây là hành vi đúng, đó là rất tốt . Nhưng có cách nào tốt hơn không? (Tôi có thể tưởng tượng này nhận được lộn xộn với hình dạng không tròn, ví dụ.)
Dưới đây là mã của tôi:
#!/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()
Và KV:
#: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