0

kivymdを使用して、特定の情報といくつかの機能ボタンを含むいくつかの「カード」を持つウィンドウを構築しようとしています。私がやろうとしているのは、カードグリッド レイアウトに追加し、そのグリッドをフローティング レイアウトで一時停止することですが、添付の画像を見て問題が発生しています。また、これを行うためのより良い方法が可能かどうかを提案してください。ウィンドウのコードは次のとおりです。後で、いくつかのボタンを押すとさらにカードを追加する関数をいくつか作成します

<ProjectCard@MDGridLayout>
    md_bg_color: 0, 1, 1, 1
    cols: 1
    MDToolbar:
        right_action_items: [["dots-vertical", lambda x: print(x)]]
        title: "Title"
        size_hint_y:0.3
    MDLabel:
        size_hint_y:0.1
        valign:"bottom"
        text:"mm:hh dd:mm:yy AM"
    MDLabel:
        size_hint_y:0.3
        multiline: True
        text:"john wick, richie rich, courage, garelt"
        valign:"top"
        adaptive_height: True
    GridLayout:
        rows:1
        cols:2
        size_hint_y:0.3
        MDLabel:
            text:"Status: " + "working"
        MDIconButton:
            icon:"details"
            adaptive_height: True




<ProjectsPage>
    FloatLayout
        MDGridLayout:
            pos_hint: {'center_x':0.5}
            size_hint_x:0.95
            spacing:[10, 10]
            cols:1
            ProjectCard:
                size_hint_y:0.3
            ProjectCard:
                size_hint_y:0.3
            ProjectCard:
                size_hint_y:0.3

Kivy ウィンドウのイメージ 出力イメージ

4

1 に答える 1

0

ボタンで新しいカードを追加し、それらすべてを簡単に表示したいと思います。したがって、ページで ScrollView を使用できます。また、このページのグリッドの列を必要に応じて設定できます。このオプションを 2 に設定しました。これらのカードは .py ファイルで作成しました。.kv でも作成できます。このコードが、新しいカードをアクションで簡単に作成する方法を理解するのに役立つことを願っています. main.py:

#main.py:
from kivy.uix.screenmanager import Screen,ScreenManager
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.app import MDApp
from kivy.properties import ObjectProperty
class ProjectsPage(Screen):
    cards_grid = ObjectProperty()
    def add_card(self):
        card = Card()
        self.cards_grid.add_widget(card)
class Card(MDBoxLayout):
    pass
class SM(ScreenManager):
    pass
class my(MDApp):
    def build(self):
        self.theme_cls.theme_style = "Dark"
        return SM()
if __name__ == '__main__':
    my().run()

my.kv:

<SM>:
    ProjectsPage:
<ProjectCard@MDGridLayout>
    size_hint_y:None
    height: '250sp'
    md_bg_color: 0, 1, 1, .5
    cols: 1
<ProjectsPage>:
    cards_grid:cards_grid
    BoxLayout:
        padding: '25sp','25sp','25sp','25sp'
        orientation: 'vertical'
        ScrollView:
            size_hint_y:.9
            do_scroll_x:False
            do_scroll_y:True
            GridLayout:
                id: cards_grid
                spacing: '25sp'
                size_hint_y:None
                height: self.minimum_height
                cols: 2
                Card:
                Card:
        Button:
            size_hint_y:.1
            text: 'Add New Card'
            on_release: root.add_card()
<Card>:
    orientation: 'vertical'
    size_hint_y:None
    height: '250sp'
    md_bg_color: 0, 1, 1, .5
    MDToolbar:
        right_action_items: [["dots-vertical", lambda x: print(x)]]
        title: "Title"
        size_hint_y:0.3
    MDLabel:
        size_hint_y:0.1
        valign:"bottom"
        text:"mm:hh dd:mm:yy AM"
    MDLabel:
        size_hint_y:0.3
        multiline: True
        text:"john wick, richie rich, courage, garelt"
        valign:"top"
        adaptive_height: True
    GridLayout:
        rows:1
        cols:2
        size_hint_y:0.3
        MDLabel:
            text:"Status: " + "working"
        MDIconButton:
            icon:"details"
            adaptive_height: True
于 2020-08-31T22:08:30.403 に答える