root/stuff/sandbox/miniwck/testclock.py

Revision 336 (by effbot, 05/04/06 15:33:20)

added testclock test script

# $Id$
# wck test program

# derived from
# http://www.effbot.org/zone/tkinter3000-demo-clock.htm

from MiniWCK import Widget

import time

class TextMixin:

    def ui_handle_resize(self, width, height):
        self.size = width, height

    def ui_handle_repair(self, draw, x0, y0, x1, y1):
        self.ui_text_draw(draw)

    def ui_text_draw(self, draw, text=None):
        size = self.size
        if text is None:
            text = self.ui_text_get()
        width, height = draw.textsize(text, self.font)
        draw.text(((size[0]-width)/2, (size[1]-height)/2), text, self.font)

    def ui_text_get(self):
        raise NotImplementedError, "must override text_get"

class Clock(TextMixin, Widget):

    ui_option_height = 2 * 30
    ui_option_width = 30 * 20

    ui_doublebuffer = 1

    def __init__(self, master, **options):
        self.font = self.ui_font("black", "Helvetica")
        self.__time = None
        self.ui_init(master, options)
        self.__update()

    def __update(self):
        t = int(time.time())
        if t != self.__time:
            self.ui_damage() # force update
            self.__time = t
        self.after(100, self.__update)

    def ui_handle_repair(self, draw, x0, y0, x1, y1):
        self.ui_text_draw(draw)

    def ui_text_get(self):
        return time.ctime(self.__time)

win = Clock(None, title="MiniWCK", background="white")
win.mainloop()
Note: See TracBrowser for help on using the browser.