【发布时间】:2015-04-07 19:14:07
【问题描述】:
我正在 python2.7 上使用 kivy。据我所知, self 不是一个真正的参数,而是在处理父数据时在函数中使用的工具。然而在下面的使用中,python 认为 self 是一个真正的参数。这是因为我在函数中调用它吗?
class Verdo(BoxLayout):
defualtval = ""
tarih = StringProperty(str(datetime.datetime.now()).split(".")[0])
istipitxt = StringProperty(defualtval)
iscitxt = StringProperty(defualtval)
iskodtxt = StringProperty(defualtval)
baslabittxt = StringProperty(defualtval)
parcanotxt = StringProperty(defualtval)
def start(self):
Clock.schedule_interval(self.callback, 0.5)
def callback(self, dt):
print "testo"
self.tarih = StringProperty(str(datetime.datetime.now()).split(".")[0])
start()
#Clock.schedule_interval((lambda dt: updater(), 1), 0.5)
#Clock.schedule_interval((lambda dt: tell(), 1), 0.5)
代码运行时出现如下错误:
2015-04-07 22:05:03.081739
Traceback (most recent call last):
File "/home/toshy/workspace/Verdo_reborn/main.py", line 28, in <module>
class Verdo(BoxLayout):
File "/home/toshy/workspace/Verdo_reborn/main.py", line 79, in Verdo
start()
TypeError: start() takes exactly 1 argument (0 given)
我还尝试了一种更简单的方法,但也失败了:
def callback(self, dt):
print "testo"
self.tarih = StringProperty(str(datetime.datetime.now()).split(".")[0])
Clock.schedule_interval(callback, 0.5)
输出:
ret = callback(self._dt)
TypeError: callback() takes exactly 2 arguments (1 given)
【问题讨论】:
-
你的缩进正确吗?在您的示例中,您在没有对象的情况下调用 start()(例如
x.start())。 -
我遇到的问题是类被 kivy 主循环调用,这就是为什么我试图让函数在类中运行。