如何在 kivymd 中制作网格布局?

How to make gridlayout in kivymd?

我正在尝试在 kivymd 中制作网格布局。 GridLayout 已创建但宽度未填满屏幕。在 kivymd 中如何扩展列的宽度以适合屏幕?

我使用了 kivymd 文档中的示例并使用它创建了网格布局。

app.py

from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.lang import Builder
from main_screen_str import helper_string
from kivy.core.window import Window

Window.size = (300, 500)


class MainScreen(Screen):
    pass


class MainApp(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.sm = ScreenManager()
        self.sm.add_widget(MainScreen(name="main_screen"))

        self.main_str = Builder.load_string(helper_string)

    def build(self):
        screen = Screen()
        screen.add_widget(self.main_str)
        return screen


if __name__ == '__main__':
    MainApp().run()

这是生成器字符串。网格布局已创建,但宽度不适合屏幕。 如何扩展网格布局中单个列的宽度?

构建字符串

helper_string = """
ScreenManager:
    MainScreen:

<MainScreen>:
    name: 'main_screen'
        
    MDGridLayout:
        cols: 3
        
        MDIconButton:
            icon: "android"
            theme_text_color: "Custom"
            text_color: app.theme_cls.primary_color
        MDIconButton:
            icon: "android"
            theme_text_color: "Custom"
            text_color: app.theme_cls.primary_color
            
        MDIconButton:
            icon: "android"
            theme_text_color: "Custom"
            text_color: app.theme_cls.primary_color
        MDIconButton:
            icon: "android"
            theme_text_color: "Custom"
            text_color: app.theme_cls.primary_color
            
        MDIconButton:
            icon: "android"
            theme_text_color: "Custom"
            text_color: app.theme_cls.primary_color
            
        MDIconButton:
            icon: "android"
            theme_text_color: "Custom"
            text_color: app.theme_cls.primary_color 
"""

根据 MDIconBuuton Documentation:

By default, MDIconButton button has a size (dp(48), dp (48))

并且 GridLayout 将使用这些大小值来调整列的大小。您可以通过调整 MDIconButtons 的大小来调整列的大小。所以,如果你只是添加:

size_hint_x: 0.33

对于每个 MDIconButton,每列将是 MainScreen.

宽度的三分之一