#!/usr/bin/env python2.3 # -*- coding: utf-8 -*- ####################################### # простой пример часов ####################################### import Tkinter, time from math import sin, cos, pi a = 100 # ширина часов в пунктах H = 50 # длина часовой стрелки в пунктах M = 95 # длина минутной стрелки в пунктах S = 80 # длина секундной стрелки в пунктах TICS_r = 85 # длина засечек на циферблате TICS_R = 95 # idH = -10; idM = -10; idS = -10; # рисование засечек на циферблате def plot_tics(parent): for i in range(12): parent.create_line( a+int(TICS_r*sin(pi*i/6)), a-int(TICS_r*cos(pi*i/6)), a+int(TICS_R*sin(pi*i/6)), a-int(TICS_R*cos(pi*i/6))) # рисование часовой стрелки def plot_hour(parent, h, m): ang = pi*(120*h+m)/720. return parent.create_line( a, a, a+int(H*sin(ang)), a-int(H*cos(ang))) # рисование минутной стрелки def plot_minute(parent, m): return parent.create_line( a, a, a+int(M*sin((pi*m)/30)), a-int(M*cos((pi*m)/30)), fill="red") # рисование секундной стрелки def plot_second(parent, s): return parent.create_line( a, a, a+int(S*sin((pi*s)/30)), a-int(S*cos((pi*s)/30)), fill="brown") # получение системного времени def get_time(): stime = time.localtime() return (stime[3] % 12, stime[4], stime[5]) # установить нарисовать время на наших часах def set_time(clock): global idH, idM, idS h, m, s = get_time() idH = plot_hour(clock, h, m) idM = plot_minute(clock, m) idS = plot_second(clock, s) # рисование системного времени def waiter(clock): if idM > 0 and idH > 0 and idS > 0: clock.delete(idM) clock.delete(idH) clock.delete(idS) set_time(clock) clock.after(1000, waiter, clock) # создание часов root = Tkinter.Tk() clock = Tkinter.Canvas(\ root, \ width=2*a,\ height=2*a) clock.pack(side=Tkinter.TOP) Tkinter.Button(\ root, text=unicode('Пока', 'koi8-r'),\ command=root.destroy).pack(side=Tkinter.LEFT) # теперь можно запускать наши часы plot_tics(clock) # рисуем штрихи на циферблате waiter(clock) # запускаем основной цикл root.mainloop() # запускаем саму программу