我正在使用 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 件它作業正常
有誰知道為什么會發生這種情況?
uj5u.com熱心網友回復:
問題是,您沒有明確指定位置MDTextField。這就是為什么即使他們在那里,他們只是在父級的 default 上相互堆疊pos。
因此,解決方法是pos明確宣告它們為,
MDTextField:
id: sheetName
pos: root.pos
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443137.html
上一篇:獲取系統指標(SM_CYSCREEN);|給出錯誤的值|但是GetSystemMetrics(SM_CXSCREEN);給出正確的值
