簡體   English   中英

Kivymd 自定義列表對話框。 無法在 mddialog 中插入可更改列表

[英]Kivymd Custom List Dialog. can't insert changeable list in mddialog

我正在嘗試在 kivyMD 的自定義對話框中添加一個可變列表。 問題是當我調用self.adding()時,列表出現在我的FloatLayout中,而不是在對話框中。
我知道那是因為我在FloatLayout中調用了“內容”。 我這樣做是因為我想使用 ObjectProperty 但效果不佳。 我真的不知道我能做些什么來解決這個問題。

對不起我的英語不好。

代碼:

from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout

from kivymd.app import MDApp
from kivymd.uix.button import MDFlatButton
from kivymd.uix.dialog import MDDialog
from kivymd.uix.list import OneLineListItem,MDList
from kivy.properties import ObjectProperty

KV = '''
<Content>
    name:"content"
    draw:container
    orientation: "vertical"
    ScrollView:

        MDList:
            id: container


FloatLayout:
    mgr:cont
    Content:
        id:cont
        
    MDFlatButton:
        text: "ALERT DIALOG"
        pos_hint: {'center_x': .5, 'center_y': .5}
        on_release: app.show_confirmation_dialog()
'''


class Content(BoxLayout):
    draw=ObjectProperty(None)


class Example(MDApp):
    dialog = None
    mgr=ObjectProperty(None)
    def adding(self):
        for i in range(20):
            self.root.mgr.draw.add_widget(OneLineListItem(text=f"Single-line item {i}"))


    def build(self):
        return Builder.load_string(KV)



    def show_confirmation_dialog(self):
        # def adding(self):
        #     for i in range(20):
        #         container.add_widget(OneLineListItem(text=f"Single-line item {i}"))
        if not self.dialog:
            self.dialog = MDDialog(
                title="Address:",
                type="custom",
                content_cls=Content(),
            )
        self.adding()
        self.dialog.open()


Example().run()

我通過編輯我的代碼來解決這個問題:

新代碼:

from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout

from kivymd.app import MDApp
from kivymd.uix.button import MDFlatButton
from kivymd.uix.dialog import MDDialog
from kivymd.uix.list import OneLineListItem,MDList

KV = '''
<Content>
    # name:"content"
    # draw:container
    orientation: "vertical"
    ScrollView:

        MDList:
            id: container


FloatLayout:
    # mgr:cont
    # Content:
    #     id:cont
        
    MDFlatButton:
        text: "ALERT DIALOG"
        pos_hint: {'center_x': .5, 'center_y': .5}
        on_release: app.show_confirmation_dialog()
'''


class Content(BoxLayout):
    def __init__(self, *args, **kwargs):
        super().__init__(**kwargs)
        self.container= self.ids.container
        print("content called")
        def adding(self):
            for i in range(20):
                self.container.add_widget(OneLineListItem(text=f"Single-line item {i}"))
            print("adding called")
        adding(self)


class Example(MDApp):
    dialog = None


    def build(self):
        return Builder.load_string(KV)


    def show_confirmation_dialog(self):
        if not self.dialog:
            self.dialog = MDDialog(
                title="Address:",
                type="custom",
                content_cls=Content(),
            )

        self.dialog.open()


Example().run()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM