【问题标题】:Can't position child layout in root layout Kivy无法在根布局 Kivy 中定位子布局
【发布时间】:2019-01-08 00:52:52
【问题描述】:

总的来说,我对 kivy 和图形编程很陌生。我正在尝试在 kivy 的根布局内放置一个子布局对象。我的子布局包含两个按钮,我希望它位于屏幕顶部。

class Homescreen(FloatLayout):

def __init__(self,**kwargs):
    super(Homescreen, self).__init__(**kwargs)

    button_holder = BoxLayout(orientation="horizontal", 
                              spacing=10, 
                              padding=[20,10], 
                              pos=(0,0))

    calendar_button = Button(text="Calendar", 
                             size=(200,100), 
                             size_hint=(None,None))

    add_activity_button = Button(text="Add activity", 
                                 size=(200,100), 
                                 size_hint=(None,None))

    button_holder.add_widget(add_activity_button)
    button_holder.add_widget(calendar_button)
    self.add_widget(button_holder)

这是我创建根(和子)布局的代码。然而,我收到一个这样的窗口:

Kivy 的文档没有太大帮助,我们将不胜感激。

【问题讨论】:

    标签: python layout kivy


    【解决方案1】:

    问题

    由于pos=(0,0),BoxLayout 位于窗口的左下角。

    解决方案

    pos 替换为pos_hint,例如pos_hint={'x': 0.23, 'y': 0.8}

    Widget class » pos_hint

    pos_hint
    

    位置提示。此属性允许您设置小部件在其父布局中的位置,以百分比为单位(类似于 size_hint)。

    例如,如果您想将小部件的顶部设置为其父布局的 90% 高度,您可以这样写:

    widget = Widget(pos_hint={'top': 0.9})
    

    “x”、“right”和“center_x”键将使用父宽度。 “y”、“top”和“center_y”键将使用父高度。

    请参阅Float Layout 以获取更多参考。

    注意

    pos_hint 并非所有布局都使用。检查相关布局的文档,看看它是否支持 pos_hint。

    pos_hint 是一个包含字典的 ObjectProperty。

    输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多