我正在尝试使用 NumericProperty,但在尝试将其用作值时出现类型错误
我的代码看起来像这样
from kivy.properties import NumericProperty
from kivy.uix.widget import Widget
class Segment(Widget):
def __init__(self, segments):
super(Segment, self).__init__()
self.segments = NumericPropery(segments)
def build(self):
for i in range(0, self.segments):
# Do something
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
for i in range(0, self.segments):
TypeError: range() integer end argument expected, got kivy.properties.NumericProperty.
Run Code Online (Sandbox Code Playgroud)
所以我尝试使用self.segments.get(),但后来我收到了这个错误
TypeError: get() takes exactly one argument (0 given)
Run Code Online (Sandbox Code Playgroud)
显然 get 函数需要<kivy._event.EventDispatcher>对象参数
知道如何解决这个问题吗?
我对这段代码有类似的问题......
class GameModel(object):
some_number = NumericProperty(1)
def __init__(self):
self.some_number = 2
Run Code Online (Sandbox Code Playgroud)
...这引发了错误:
TypeError: Argument 'obj' has incorrect type (expected kivy._event.EventDispatcher, got GameModel)
Run Code Online (Sandbox Code Playgroud)
不过,我确实在班级级别声明了该财产。在我的情况下,问题是类本身不是从 Kivy Widget 类派生的,或者 - 如错误消息中所述 - 来自 EventDispatcher 对象
从 EventDispatcher 派生解决了我的问题:
class GameModel(EventDispatcher):
Run Code Online (Sandbox Code Playgroud)
希望有一天这对其他人有帮助;-)
| 归档时间: |
|
| 查看次数: |
3945 次 |
| 最近记录: |