KivyMD MDDialog 不允许在一个对话框中输入多个文本

KivyMD MDDialog is not allowing multiple text inputs to be in one Dialog

我正在使用 KivyMD 并尝试创建一个具有多个复选框和多个文本输入的对话框,但是我无法在对话框中存在多个文本输入

这是我正在谈论的最小可复制示例:

from kivy.lang import Builder
from kivy.app import App
from kivy.properties import StringProperty
from kivy.uix.screenmanager import Screen

from kivymd.uix.list import  OneLineAvatarIconListItem
from kivymd.app import MDApp
from kivymd.uix.dialog import MDDialog
from kivymd.uix.button import MDFlatButton

Builder.load_string(
    '''
<ImportExcelFile>
    orientation: "horizontal"
    
    CheckboxLeftWidget:
        id: check
        group: "check"
    
    MDTextField:
        id: sheetName
        hint_text: "Sheet Name"
        size_hint_x: None
        width: root.width/3
        pos_hint: {'center_x': 0.5}
        
<FileList>
    MDBoxLayout:
        orientation: 'vertical'
        '''
        )

class ImportExcelFile(OneLineAvatarIconListItem):
    sheet = StringProperty()

class FileList(Screen):
    pass

class MainApp(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.screen = FileList()

    def build(self):
        self.importDialogExcel = MDDialog(
            title="Please select the sheets you would like to import, and then give them a name",
            type="confirmation",
            auto_dismiss=False,
            items = [ImportExcelFile(text=f'Sheet {i}', sheet=f'Sheet {i}') for i in range(3)],
            buttons=[
                    MDFlatButton(
                        text="CANCEL",
                        theme_text_color="Custom",
                        text_color=App.get_running_app().theme_cls.primary_color,
                    ),
                    MDFlatButton(
                        text="OK",
                        theme_text_color="Custom",
                        text_color=App.get_running_app().theme_cls.primary_color,
                    ),
                ],
            )
        self.importDialogExcel.open()
        return self.screen

    def on_start(self):
        pass


MainApp().run()

这是生成的对话框:

每个检查都应该有一个文本框,但唯一得到一个的是底行,无论对话框中有多少项目(2、3、4 都经过测试),都会发生这种情况。有 1 件效果很好

有人知道为什么会这样吗?

问题是,您没有明确指定 MDTextField 的位置。这就是为什么即使它们在那里,它们也只是在父级的默认 pos.

上相互堆叠

所以修复方法是将它们的 pos 明确声明为,

    MDTextField:
        id: sheetName
        pos: root.pos
        ...