在重绘场景时遇到问题

时间:2015-02-19 17:39:21

标签: python

我最近开始学习Python,刚刚在CodeAcademy上完成了我的课程,所以我一直在尝试做一些小项目来练习并真正学习这门语言。我想要做的是创建一个时钟,随着时间的变化会改变颜色,我绘制了场景,但时间不随之改变,我如何让场景每秒重绘一次?

from time import strftime
from scene import *

current_time = strftime("%b %d           %Y %H:%M:%S")

hour = int(strftime("%H"))
min = int(strftime("%M"))
sec = int(strftime("%S"))

class Clock (Scene):

    def draw (self):
        self.hour = hour
        self.min = min
        self.sec = sec
        background(0, 0, 0)
        fill(0, 0, 0)
        w, h = self.size.w, self.size.h
        rect(w * 0.5 - 100, h * 0.5 -   100, 200, 200)
        s = 40 if self.size.w > 700 else 17
        text(current_time,
            'Futura', s,   *self.bounds.center().as_tuple())
        dead = set()

run(Clock())
print current_time
print hex(hour)
print hex(min)
print hex(sec)`

1 个答案:

答案 0 :(得分:0)

您只在脚本开头计算一次,分钟和秒。 second不知道它代表第二个,它只知道它是一个愚蠢的整数。这就是为什么它不会在时间变化时自行更新。

尝试将strftime移动到draw方法中,以便每次重绘屏幕时都会执行。

def draw (self):
    current_time = strftime("%b %d %Y %H:%M:%S")
    hour = int(strftime("%H"))
    min = int(strftime("%M"))
    sec = int(strftime("%S"))
    self.hour = hour
    self.min = min
    self.sec = sec
    #...etc