【问题标题】:MDLabels stacked in one place (one above another)MDLabels 堆叠在一个地方(一个在另一个之上)
【发布时间】:2019-09-04 19:08:16
【问题描述】:

我对 BoxLayout 中的多个 MDLabels 有一些问题(即由 AnchorLayout 包含),因此所有 MDLabel 对象都堆叠在屏幕上的一个位置!

我不知道如何使它们像列表一样居中和分组(带间距和例如)

请帮我解决这个问题! 非常感谢,抱歉英语不好。

这是我的 main.py

from kivy.app import App
from kivymd.theming import ThemeManager
from kivymd.label import MDLabel
from kivy.uix.screenmanager import Screen
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.metrics import dp, sp, pt

def toast(text):
    from kivymd.toast.kivytoast import toast

    toast(text)

class MyScreen(Screen):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self.menu_items = [
                {
                    "viewclass": "MDMenuItem",
                    "text": "text%d" % i,
                    "callback": self.callback,
                }
                for i in range(1, 3)
            ]

        self.menu_button = None

    def change_variable(self, value):
        print("\nvalue=", value)
        self.VARIABLE = value
        print("\tself.VARIABLE=", self.VARIABLE)

    def callback(self, *args):
        toast(args[0])

class MainApp(App):
    title = "KivyMD MDDropdownMenu Demo"
    theme_cls = ThemeManager()

    def build(self):
        return MyScreen()


if __name__ == "__main__":
    MainApp().run()

还有我的 main.kv 文件包含:

#:import MDDropdownMenu kivymd.menus.MDDropdownMenu
#:import MDRaisedButton kivymd.button.MDRaisedButton
#:import MDLabel kivymd.label.MDLabel

<MDMenuItem>:
    on_release:
        app.root.change_variable(self.text)
        app.root.menu_button.text = self.text

<MyScreen>:
    name: 'myscrn'
    AnchorLayout:
        anchor_y: 'center'
        BoxLayout:
            orientation: 'vertical'
            size_hint: 0.1, 0.5
            pos_hint: {'center_x': 0.5, 'center_y': 0.5}
            spacing: dp(10)
            MDRaisedButton:
                id: mainbutton
                size_hint: None, None
                size: 3 * dp(48), dp(48)
                text: 'MDButton1'
                pos_hint: {'center_x': 0.5, 'center_y': 0.5}
                opposite_colors: True
                on_release:
                    root.menu_button = mainbutton
                    MDDropdownMenu(items=root.menu_items, width_mult=4).open(self)
            MDRaisedButton:
                id: secondbutton
                size_hint: None, None
                size: 3 * dp(48), dp(48)
                text: 'MDButton2'
                pos_hint: {'center_x': 0.5, 'center_y': 0.5}
                opposite_colors: True
                on_release:
                    root.menu_button = secondbutton
                    MDDropdownMenu(items=root.menu_items, width_mult=4).open(self)
    AnchorLayout:
        anchor_y: 'top'
        BoxLayout:
            orientation: 'vertical'
            size_hint: 0.95, 0.5
            padding: [0, 0, 0, 0]
            spacing: dp(5)
            pos_hint: {'center_x': 0.5, 'center_y': 0.5}
        MDLabel:
            font_size: dp(12)
            text: '123'
        MDLabel:
            font_size: dp(22)
            text: '456'

【问题讨论】:

    标签: python android python-3.x kivy kivy-language


    【解决方案1】:

    糟糕,看起来像一个简单的错误。您在 KV Lang 上的缩进不正确。您没有将标签正确嵌套到 BoxLayout 中。

        AnchorLayout:
        anchor_y: 'top'
        BoxLayout:
            orientation: 'vertical'
            size_hint: 0.95, 0.5
            padding: [0, 0, 0, 0]
            spacing: dp(5)
            pos_hint: {'center_x': 0.5, 'center_y': 0.5}
            MDLabel:
                font_size: dp(12)
                text: '123'
            MDLabel:
                font_size: dp(22)
                text: '456'"""
    

    【讨论】:

    • 天哪,我的眼睛在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2019-10-28
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    相关资源
    最近更新 更多