在Kivy中调整大小会在小部件之间留出空白

时间:2019-01-23 19:29:29

标签: python kivy

我已经创建了一个基本的GUI,以测试scrollview并获得进一步构建平台。 调整窗口大小时,小部件上方会出现黑色空间,它们之间也有很多黑色空间。

我尝试过使用“ anchor”和“ pos”,但无法将小部件留在窗口顶部。

class GUI(App):
    def build(self):
        root = FloatLayout(size_hint=(1, None), size=(Window.width, Window.height))
        sidepanel = BoxLayout(orientation="vertical", size_hint=(None, 1), pos_hint={"x": 0.0, "y": 0.0})
        scroll = ScrollView(pos_hint={"x": 0.2, "y": 0.0})
        layout = BoxLayout(orientation="vertical", spacing=10, size_hint_y=None)

        layout.bind(minimum_height=layout.setter('height'))

        for i in range(50):
            btn = Button(text=str(i), size_hint_y=None, height=30)
            layout.add_widget(btn)


        sidepanel.add_widget(Button(text="Import Photos", size_hint=(1,0.2)))
        sidepanel.add_widget(Button(text="Create Report", size_hint=(1,0.2)))
        sidepanel.add_widget(Button(text="Save?", size_hint=(1,0.2)))
        sidepanel.add_widget(Button(text="Button 4", size_hint=(1,0.2)))


        scroll.add_widget(layout)


        root.add_widget(sidepanel)
        root.add_widget(scroll)

        return root

我希望侧面板保持相同的大小,而包含“布局”的滚动视图将随窗口调整大小。并且所有小部件都应位于顶部。

标准窗口

调整大小的窗口

1 个答案:

答案 0 :(得分:0)

您的问题源于“根”浮动版式中的尺寸规格。尝试使用:

root = FloatLayout()

,其中不指定任何尺寸说明。它会知道如何使用窗口自动调整自身大小。通常,您要避免在同一窗口小部件上同时使用size_hintsizepos_hintpos也是如此。