当前位置: 首页 > 后端技术 > Python

Kivy2.0的一个变化

时间:2023-03-26 11:57:02 Python

Kivy完全支持使用代码创建界面布局和控件,2.0版本最近刚刚上线。在使用的时候发现新旧版本的区别:importkivykivy.require('2.0.0')#替换成你当前的kivy版本!fromkivy.appimportAppfromkivy.uix.labelimportLabelclassMyApp(应用程序):defbuild(self):label=Label(id='mouse_label',text='pos~~~',pos=(0,0),width='50dp',height='20dp',font_size=12,bold=True,color=(0.1,0.1,0.1,1),outline_width=1,outline_color=(1,1,1))returnlabelif__name__=='__main__':MyApp().run()一个以上官网文档示例代码略有改动,增加了很多初始化Label的属性,在1.x版本可以正常运行。但是升级到2.0版本后,会报错:TypeError:object.__init__()takesexactlyoneargument(theinstancetoinitialize)这是经典的Kivy报错,也很奇怪,完全无法理解——的构造函数Label类,是否可以接受多个参数?即使调试也看不出问题所在。你只知道父类的父类的构造函数(你没有看错,是二级父类,指向WidgetBase)是错误的。但是既然可以使用示例代码,那么问题肯定出在我添加的参数上。本来以为是废弃的样式,试了一下才发现是id!?只需删除id='mouse_label'这一行,一切就会恢复正常。我还不知道为什么。最终运行成功的代码如下:importkivykivy.require('2.0.0')#替换成你当前的kivy版本!fromkivy.appimportAppfromkivy.uix.labelimportLabelclassMyApp(App):defbuild(self):label=Label(text='pos~~~',pos=(0,0),width='50dp',height='20dp',font_size=12,bold=True,color=(0.1,0.1,0.1,1),outline_width=1,outline_color=(1,1,1))returnlabelif__name__=='__main__':MyApp().run()运行效果