Python Kivy报错:Invalid property name 问题求助
错误分析与修正
核心错误点
- 类继承逻辑错误:同时让
KivyButton继承App和BoxLayout违反Kivy结构规范——App类是程序入口需单独定义,布局类应单独继承Widget/BoxLayout等组件。 - KV语言语法问题:
- Image控件的
source、center_x、center_y属性缩进错误,未归属于Image:节点下。 center_y赋值错误写成self.parent.center_x,且属性末尾多了多余冒号。- Button控件不能直接嵌套Image子控件,需用布局容器(如BoxLayout)包裹,或把Image设为Button背景。
- Image控件的
修正后的代码
from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.lang import Builder Builder.load_string(""" <KivyButtonLayout>: orientation: 'vertical' Button: text: 'viva la vida' size_hint: .20, .10 pos_hint: {'center_x': 0.5} Image: source: 'Arnorld.jpg' size_hint: .5, .8 pos_hint: {'center_x': 0.5, 'center_y': 0.5} """) class KivyButtonLayout(BoxLayout): pass class KivyButtonApp(App): def build(self): return KivyButtonLayout() if __name__ == "__main__": KivyButtonApp().run()
关键修正说明
- 拆分类结构:将布局类
KivyButtonLayout与App入口类KivyButtonApp分离,符合Kivy设计逻辑。 - 修复KV语法:把Image的属性正确缩进在
Image:节点下,移除属性末尾多余冒号,修正center_y的赋值目标。 - 调整控件结构:用BoxLayout包裹Button和Image(Button无法直接包含子控件);通过
pos_hint实现控件居中,比直接设置center_x更适配Kivy的布局系统。 - 文件路径检查:确保
Arnorld.jpg与Python脚本在同一目录,或使用完整文件路径。
内容的提问来源于stack exchange,提问作者Leonardo Calvache
相关产品推荐
相关产品推荐

