首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当指定MDDialog时,kivymd MDDialog不显示项。

当指定MDDialog时,kivymd MDDialog不显示项。
EN

Stack Overflow用户
提问于 2022-10-26 13:32:32
回答 1查看 54关注 0票数 0

我需要一个带有列表的kivymd MDDialig对话框。默认情况下将类型参数设置为MDDialog或“定制”时,它只显示对话框的标题,而不显示项本身。将类型参数设置为"simple“会导致错误。

代码语言:javascript
复制
from kivymd.app import MDApp
from kivy.lang import Builder
from kivymd.uix.dialog import MDDialog
from kivymd.uix.list import OneLineListItem

main = '''

AnchorLayout:
    padding: "25sp"
    anchor_x: "center"
    anchor_y: "top"
    TwoLineListItem:
        text: 'key'
        secondary_text: 'value_1'
        on_press: app.open_dialog()
'''

class Example(MDApp):

    def build(self):
        return Builder.load_string(main)
    
    def open_dialog(self):
        dialog = MDDialog(
            title="key",
            items=[
                OneLineListItem(text="value_1"),
                OneLineListItem(text="value_2")
            ]
        )
        dialog.open()

Example().run()

将类型设置为“简单”时会发生错误

代码语言:javascript
复制
File "kivy/properties.pyx", line 961, in kivy.properties.ObservableDict.__getattr__
KeyError: '\_left_container'

File "kivy/properties.pyx", line 964, in kivy.properties.ObservableDict.__getattr__
AttributeError: 'super' object has no attribute '__getattr__'

使用小部件的示例取自kivyMD文档。按钮显示正确,但元素不显示。任何暗示都会有帮助。

下面是显示问题的图片。

在这里输入图像描述

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-26 18:50:59

代码语言:javascript
复制
from kivy.lang import Builder
from kivy.properties import StringProperty

from kivymd.app import MDApp
from kivymd.uix.dialog import MDDialog
from kivymd.uix.list import OneLineAvatarListItem

KV = '''
<Item>

    ImageLeftWidget:
        source: root.source


MDFloatLayout:

    MDFlatButton:
        text: "ALERT DIALOG"
        pos_hint: {'center_x': .5, 'center_y': .5}
        on_release: app.show_simple_dialog()
'''


class Item(OneLineAvatarListItem):
    divider = None
    source = StringProperty()


class Example(MDApp):
    dialog = None

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

def show_simple_dialog(self):
    if not self.dialog:
        self.dialog = MDDialog(
            title="Set backup account",
            type="simple",
            items=[
                Item(text="user01@gmail.com", source="kivymd/images/logo/kivymd-icon-128.png"),
                Item(text="user02@gmail.com", source="data/logo/kivy-icon-128.png"),
            ],
        )
    self.dialog.open()


Example().run()

https://kivymd.readthedocs.io/en/1.1.1/components/dialog/#kivymd.uix.dialog.dialog.MDDialog.items

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74208699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档