从 kivy 1.11.1 升级到 kivy 2.0.0 后,应用程序在启动时抛出错误。任何想法?
Posted
技术标签:
【中文标题】从 kivy 1.11.1 升级到 kivy 2.0.0 后,应用程序在启动时抛出错误。任何想法?【英文标题】:App throws error on start after upgrading from kivy 1.11.1 to kivy 2.0.0. Any idea? 【发布时间】:2021-07-15 16:17:44 【问题描述】:我是一名业余编码员,通过 kivy 制作应用程序,由于某些原因,当我声明多个小部件实例时,某些小部件会导致应用程序失败。此问题仅在从 kivy 1.11.1 升级到 kivy 2.0.0 后才开始。这是导致问题的小部件之一:
<LineCircle1@Widget>:
onSwitch: 1
ringActivate: True
myRadius: 100
myColors: [[.1, 1, .1],[1, 0, .1]]
myColorCurrent: [1, 0, .1]
canvas:
Color:
rgb: self.myColorCurrent if self.ringActivate == True else self.myColors[1]
a: root.onSwitch
Line:
width: 2 if self.ringActivate == True else self.myRadius
circle:
(root.center_x, root.center_y, root.myRadius) if root.ringActivate == True else (self.center_x, root.center_y, root.myRadius/5)
Ellipse:
size: (2*self.myRadius,2*self.myRadius) if root.ringActivate == True else (0.01,0.01)
pos: self.center_x-root.myRadius,root.center_y-root.myRadius
center: self.center
上述代码的第 9 行抛出“IndexError: list index out of range”,第 12 行抛出“GraphicException: Invalid width value, must be > 0”。这两个错误都是在升级到 kivy 2.0.0 后才出现的。
为了隔离问题,我创建了最小可行代码,可在下面的 github 链接中找到。如果只声明了一个 LineCircle1 实例,则应用程序可以工作。如果声明了两个 LineCircle1 实例,则会出现错误。任何帮助将不胜感激!!谢谢!
网址:https://github.com/Ealt1/myTestApp
【问题讨论】:
【参考方案1】:我认为您的代码应该可以工作,但事实并非如此。一种解决方法是在 py
中声明 LineCircle1
类,并在其中定义一些属性:
class LineCircle1(Widget):
myColors = ListProperty( [[.1, 1, .1], [1, 0, .1]] )
myRadius = NumericProperty(100)
然后kv
变成:
<LineCircle1>:
onSwitch: 1
ringActivate: True
myColorCurrent: [1, 0, .1]
canvas:
Color:
rgb: self.myColorCurrent if self.ringActivate == True else self.myColors[0]
a: root.onSwitch
Line:
width: 2 if self.ringActivate == True else self.myRadius
circle:
(root.center_x, root.center_y, root.myRadius) if root.ringActivate == True else (self.center_x, root.center_y, root.myRadius/5)
Ellipse:
size: (2*self.myRadius,2*self.myRadius) if root.ringActivate == True else (0.01,0.01)
pos: self.center_x-root.myRadius,root.center_y-root.myRadius
center: self.center
【讨论】:
以上是关于从 kivy 1.11.1 升级到 kivy 2.0.0 后,应用程序在启动时抛出错误。任何想法?的主要内容,如果未能解决你的问题,请参考以下文章