[Python] Adjust the position of the gridlayout in kivy

Discussão em 'Python' iniciado por Stack, Fevereiro 11, 2025.

  1. Stack

    Stack Membro Participativo

    I create an UI displaying 6 states (cols:3 /rows:2). I'm using the GridLayout feature and 6 MDCard equalivents for 6 states I ưant want to display to the user. The problem I met is that I cannot adjust the position of these states in the middle of the screen. I'm using the Kivy framework

    from kivy.lang import Builder
    from kivy.properties import ObjectProperty

    from kivymd.app import MDApp
    from kivymd.uix.scrollview import MDScrollView

    KV = '''
    <ContentNavigationDrawer>

    MDList:

    OneLineListItem:
    text: "Screen 1"
    on_press:
    root.nav_drawer.set_state("close")
    root.screen_manager.current = "scr 1"

    OneLineListItem:
    text: "Screen 2"
    on_press:
    root.nav_drawer.set_state("close")
    root.screen_manager.current = "scr 2"


    MDScreen:

    MDTopAppBar:
    pos_hint: {"top": 1}
    elevation: 4
    title: "MDNavigationDrawer"
    left_action_items: [["menu", lambda x: nav_drawer.set_state("open")]]

    MDNavigationLayout:

    MDScreenManager:
    id: screen_manager

    MDScreen:
    name: "scr 1"
    GridLayout:
    cols: 3
    rows: 2
    padding: "10dp" # Optional: Padding inside the grid
    spacing: "1dp" # Optional: Spacing between items
    size_hint_y: None # Thay đổi kích thước theo chiều cao
    height: self.minimum_height # Đặt chiều cao tối thiểu

    MDCard:
    size_hint: None, None
    size: "200dp", "200dp"
    MDLabel:
    text:"item1"

    MDCard:
    size_hint: None, None
    size: "200dp", "200dp"
    MDLabel:
    text:"item2"
    MDCard:
    size_hint: None, None
    size: "200dp", "200dp"
    MDLabel:
    text:"item3"

    MDCard:
    size_hint: None, None
    size: "200dp", "200dp"
    MDLabel:
    text:"item4"

    MDCard:
    size_hint: None, None
    size: "200dp", "200dp"
    MDLabel:
    text:"item5"

    MDCard:
    size_hint: None, None
    size: "200dp", "200dp"
    MDLabel:
    text:"item6"


    MDScreen:
    name: "scr 2"

    MDLabel:
    text: "Screen 2"
    halign: "center"

    MDNavigationDrawer:
    id: nav_drawer
    radius: (0, 16, 16, 0)

    ContentNavigationDrawer:
    screen_manager: screen_manager
    nav_drawer: nav_drawer
    '''


    class ContentNavigationDrawer(MDScrollView):
    screen_manager = ObjectProperty()
    nav_drawer = ObjectProperty()


    class Example(MDApp):
    def build(self):
    self.theme_cls.primary_palette = "Orange"
    self.theme_cls.theme_style = "Dark"
    return Builder.load_string(KV)


    Example().run()


    Image description here

    Continue reading...

Compartilhe esta Página