在 kivymd 中使用 for 循环创建的文本看起来很杂乱

Text created using for loops in kivymd looks cluttered

提问人:Parrin_ 提问时间:11/13/2023 最后编辑:Parrin_ 更新时间:11/13/2023 访问量:19

问:

我一直在做一个小型编码项目,这是一个适用于 Android 的应用程序。我在我的 python 文件中使用 for 循环创建了一个名为“Contraindicaciones”的屏幕,因为我必须制作大量的复选框。

在此屏幕中,有 10 个复选框,每个复选框都有自己的标签,位于 2 列 GridLayout 上。

问题是,当我将屏幕大小调整为类似于手机时,标签(标题和复选框标签)看起来非常混乱,这真的很糟糕,因为该应用程序将在智能手机中使用。

如果您帮助我使屏幕看起来更整洁,特别是对于智能手机屏幕,那将有很大帮助。

我尝试过增加间距和减小标签的大小,以及font_size属性,但它没有用,实际上增加间距使它看起来更糟(顶部的按钮看起来很奇怪)并减小标签的大小,font_size根本没有效果(这很奇怪)

class Contraindicaciones(MDScreen):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # Scrollview
        self.scrollview_contraindicaciones = MDScrollView(size_hint=(1, None), size = (Window.width, Window.height))

        # GridLayout
        layout_contraindicaciones = MDGridLayout(orientation = "lr-tb", spacing = "100dp", padding = "20dp", size_hint_x = 1, size_hint_y = None, cols = 2)
        layout_contraindicaciones.bind(minimum_height = layout_contraindicaciones.setter("height"))

        # Go Back Button:
        invisible_label1 = MDLabel(text = "")
        invisible_label1.size_hint_y = None
        invisible_label1.size_hint_x = 0.5
        invisible_label1.height = dp(50)

        back_button_layout = MDBoxLayout(orientation = "vertical")
        back_button = MDFillRoundFlatButton(text = "Anterior", font_name = "fonts/Lato-Bolditalic.ttf")
        back_button.haling = "left"
        back_button.size_hint_y = None
        back_button.size_hint_x = 0.8

        back_button.bind(on_release = self.back)

        back_button_layout.add_widget(back_button)
        layout_contraindicaciones.add_widget(back_button_layout)
        layout_contraindicaciones.add_widget(invisible_label1)

        #title
        title_label = MDLabel(text = "Contraindicaciones", halign="left")
        title_label.font_size = "15dp"
        title_label.size_hint_y = None
        title_label.size_hint_x = 1
        title_label.font_name = "fonts/Lato-Bolditalic.ttf"
        title_label.height = dp(50)

        # Invisible Label
        invisible_label2 = MDLabel(text = "")
        invisible_label2.size_hint_y = None
        invisible_label2.size_hint_x = 0.1
        invisible_label2.height = dp(50)

        # Title and Invisible Label to not mess the rest up
        layout_contraindicaciones.add_widget(title_label)
        layout_contraindicaciones.add_widget(invisible_label2)

        self.checkboxes = []

        contraindicaciones = ["Hemorragia intracraneal (HIC) previa", "Lesión vascular cerebral estructural conocida",
        "Neoplasia intracraneal maligna conocida ya sea primaria o metastásica", "Accidente cerebrovascular isquémico en un plazo de 3 meses",
        "Sospecha de disección aórtica", "Hemorragia activa o diátesis hemorrágica", "Traumatismo craneoencefálico cerrado importante o traumatismo facial en los últimos 3 meses",
        "Cirugía intracraneal o intramedular en un plazo de 3 meses", "Hipertensión no controlada grave", "En caso de estreptoquinasa, el tratamiento previo debe ser dentro de los 6 meses previos"]

        for i, contraindicacion in enumerate(contraindicaciones):
            size_checkbox = dp(32)
            size_labels = dp(12)
            checkbox = MDCheckbox(size_hint=(0.5, None), size=(size_checkbox, size_checkbox))
            label = MDLabel(text=contraindicacion, size_hint=(0.8, None), size=(size_labels, size_labels), font_size = "10dp", multiline = True)
            label.font_name = "fonts/Lato-Italic.ttf"
            layout_contraindicaciones.add_widget(label)
            layout_contraindicaciones.add_widget(checkbox)

            self.checkboxes.append(checkbox)

        # Button and invisible label
        invisible_label3 = MDLabel(text = "")
        invisible_label3.size_hint_y = None
        invisible_label3.size_hint_x = 0.5
        invisible_label3.height = dp(50)

        next_button = MDFillRoundFlatButton(text = "Continuar", font_name = "fonts/Lato-Bolditalic.ttf")
        next_button.haling = "right"
        next_button.size_hint_y = None
        next_button.size_hint_x = 0.5
        next_button.bind(on_release = self.forward)

        layout_contraindicaciones.add_widget(invisible_label3)
        layout_contraindicaciones.add_widget(next_button)

        #Se agrega Grid a Scroll
        self.scrollview_contraindicaciones.add_widget(layout_contraindicaciones)
        self.add_widget(self.scrollview_contraindicaciones)

    def back(self,*_):
        self.manager.transition.direction = "right"
        self.manager.current = "c_t"
    def forward(self,*_):
        if any(checkbox.active for checkbox in self.checkboxes):
            self.manager.transition.direction = "left"
            self.manager.current = "contra_n"
        else:
            self.manager.transition.direction = "left"
            self.manager.current = "t_y"
Python 用户界面 Kivy Kivymd

评论


答: 暂无答案