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

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背景。

修正后的代码

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()

关键修正说明

  1. 拆分类结构:将布局类KivyButtonLayout与App入口类KivyButtonApp分离,符合Kivy设计逻辑。
  2. 修复KV语法:把Image的属性正确缩进在Image:节点下,移除属性末尾多余冒号,修正center_y的赋值目标。
  3. 调整控件结构:用BoxLayout包裹Button和Image(Button无法直接包含子控件);通过pos_hint实现控件居中,比直接设置center_x更适配Kivy的布局系统。
  4. 文件路径检查:确保Arnorld.jpg与Python脚本在同一目录,或使用完整文件路径。

内容的提问来源于stack exchange,提问作者Leonardo Calvache

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:52:37