Kivy / Python倒计时App项目kivy没有属性'内置'错误

时间:2016-04-21 01:31:55

标签: python kivy

问题:什么是'没有属性'内置'错误,我需要做些什么来纠正这段代码,以便它可以接收一个日期时间对象并显示倒计时?对不起,很长的帖子。

我提供了代码和指向the .kv file的链接。

我尝试创建一个倒计时时钟,它将一个datetime对象作为参数并倒计时到该日期(使用python和kivy)。它基本上是Adam Giermanowski倒数计时器教程的略微改编。

这是我的代码:

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
from kivy.clock import Clock
import datetime

#datetime object
b= datetime.datetime(2016,9,12,3,5)

class Counter_Timer(BoxLayout):
    days = StringProperty()
    hours = StringProperty()
    minutes = StringProperty()
    seconds = StringProperty()

    def __init__(self, datetimeOBJ):
        self.datetimeOBJ = datetimeOBJ

    def update(self, dt):
        #the difference in time
        delta = self.datetimeOBJ - datetime.datetime.now()
        self.days = str(delta.days)
        hour_string = str(delta).split(', ')[1]
        self.hours = hour_string.split(':')[0]
        self.minutes = hour_string.split(':')[1]
        self.seconds = hour_string.split(':')[2].split('.')[0]


class Counter(App):
    #takes a datetime object as a parameter 
    def __init__(self, datetimeOBJ):
        self.datetimeOBJ = datetimeOBJ 

    def build(self):
        Counter = Counter_Timer(self.datetimeOBJ)
        Clock.schedule_interval(Counter.update, 1.0)
        return Counter

if __name__=='__main__':
    Counter(b).run()

这里是Counter(b).run()行的错误:

AttributeError: 'Counter' object has no attribute 'built'

1 个答案:

答案 0 :(得分:1)

当你重写__init__时,你必须调用超类构造函数,这样构造函数为了使类的其他方法工作所做的所有事情都完成了。你的init方法应该是这样的:

def __init__(self, datetimeOBJ):
    App.init(self)
    self.datetimeOBJ = datetimeOBJ