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

Posted

技术标签:

【中文标题】如何在 kivymd 中制作网格布局?【英文标题】:How to make gridlayout in kivymd? 【发布时间】:2021-01-01 03:42:12 【问题描述】:

我正在尝试在 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 
"""

【问题讨论】:

【参考方案1】:

根据MDIconBuuton Documentation:

默认情况下,MDIconButton 按钮的大小为 (dp(48), dp (48))

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

size_hint_x: 0.33

对于每个MDIconButton,每列将是MainScreen 宽度的三分之一。

【讨论】:

以上是关于如何在 kivymd 中制作网格布局?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作像redbus一样的座位布局?

如何在 kivy 中设置网格布局的位置(x,y 坐标)?

学会使用Android Studio网格布局制作计算器界面

Swing 布局 - 在保持组件尺寸的同时使用网格

如何切换网格布局中的小部件可见性?

如何使用新的 CSS GRID 布局创建像 12 列(仅网格)网格系统的 Bootstrap