这是来自Kivy相对布局的文档。 https://kivy.org/docs/api-kivy.uix.relativelayout.html
相对布局:此布局允许您设置相对坐标 为孩子。如果您想要绝对定位,请使用FloatLayout。 RelativeLayout类的行为与常规的FloatLayout类似 除了它的子窗口小部件相对于布局定位。 当position =(0,0)的小部件被添加到RelativeLayout时, 当RelativeLayout的位置为时,子窗口小部件也会移动 改变。子窗口小部件坐标始终为(0,0) 相对于父布局。
我看到Floatlayout也是如此。事实上,Floatlayout和RelativeLayout都支持绝对和相对定位,具体取决于是否使用了pos_hint或pos。
实际上,无论绝对位置和相对位置如何,当布局位置发生变化时,小部件都会移动。
答案 0 :(得分:2)
FloatLayout :此布局使用比例坐标组织小部件 size_hint和pos_hint属性。值是数字 介于0和1之间,表示窗口大小的比例。
相对布局:此布局的运行方式与FloatLayout的运行方式相同,但是 定位属性(pos,x,center_x,right,y,center_y和 top)是相对于布局大小而不是窗口大小。
可用的pos_hint键(x,center_x,right,y,center_y和top)非常有用 用于对齐边缘或居中。例如,pos_hint:{'center_x':。5, 'center_y':。5}将Widget放在中间,无论大小如何 窗口是。
答案 1 :(得分:0)
请参阅下面的python程序。 FloatVerification和RelativeVerification类在窗口大小和布局大小方面的行为方式相同。是否有一些我想念的方面?
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.button import Button
class FloatVerification(App):
def build(self):
bl = BoxLayout()
fl1 = FloatLayout()
fl2 = FloatLayout()
b1 = Button(size_hint=(.5,.5),
pos_hint={'top':.5,'right':.5},
text="Hello")
b2 = Button(size_hint=(.5,.5),
pos_hint={'top':.5,'right':.5},
text="Hello")
fl1.add_widget(b1)
fl2.add_widget(b2)
bl.add_widget(fl1)
bl.add_widget(fl2)
return bl
class RelativeVerification(App):
def build(self):
bl = BoxLayout()
rl1 = RelativeLayout()
rl2 = RelativeLayout()
b1 = Button(size_hint=(.5,.5),
pos_hint={'top':.5,'right':.5},
text="Hello")
b2 = Button(size_hint=(.5,.5),
pos_hint={'top':.5,'right':.5},
text="Hello")
rl1.add_widget(b1)
rl2.add_widget(b2)
bl.add_widget(rl1)
bl.add_widget(rl2)
return bl
if __name__ == "__main__":
FloatVerification().run()
#RelativeVerification().run()