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.
相关产品推荐
相关产品推荐

