You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy如何在on_start方法中创建高度为minimum_height且配置pos_hint的组件

问题修正方案

语法&逻辑错误说明

  • pos_hint参数是Python字典类型,键值对需要用冒号:分隔,你之前写的等号=属于语法错误
  • add_widget()方法没有返回值,直接将其赋值给变量会得到None,所以抛出NoneType相关属性错误
  • 注释里的height = self.minimum_height中self指向的是当前MainApp实例,而非你创建的MDCard实例,自然无法获取卡片的minimum_height属性
  • 你已经配置了adaptive_height = True,MDCard会自动将高度设为自身minimum_height,不需要额外手动赋值height,如果需要后续动态适配子控件高度,可用bind方法绑定

修正后的代码

from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.card import MDCard


class MainApp(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "LightGreen"
        self.theme_cls.primary_hue = "700"
        return Builder.load_file("main.kv")

    def on_start(self):
        # 先实例化MDCard存到变量
        veg_card = MDCard(
            size_hint_x = 1,
            size_hint_y = None,
            adaptive_height = True,
            pos_hint = {"center_x": .5},
            spacing = 5,
            padding = 30,
            elevation = 18,
            ripple_behavior = True
        )
        # 若后续需要动态添加子控件,可加上这行实现高度自动适配:
        # veg_card.bind(minimum_height=veg_card.setter('height'))
        self.root.ids.main_grid.add_widget(veg_card)
        

MainApp().run()

内容的提问来源于stack exchange,提问作者Matthew T.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:57:02