#!/usr/bin/env python import sys from python_tqt.qt import * def TQMIN(x, y): if y > x: return y return x class AnalogClock(TQWidget): def __init__(self, *args): apply(TQWidget.__init__,(self,) + args) self.time = TQTime.currentTime() internalTimer = TQTimer(self) self.connect(internalTimer, SIGNAL("timeout()"), self.timeout) internalTimer.start(5000) def timeout(self): new_time = TQTime.currentTime() if new_time.minute() != self.time.minute(): self.update() def paintEvent(self, qe): if not self.isVisible(): return self.time = TQTime.currentTime() pts = TQPointArray() paint = TQPainter(self) paint.setBrush(self.foregroundColor()) cp = TQPoint(self.rect().center()) d = TQMIN(self.width(), self.height()) matrix = TQWMatrix() matrix.translate(cp.x(), cp.y()) matrix.scale(d/1000.0, d/1000.0) h_angle = 30*(self.time.hour()%12 - 3) + self.time.minute()/2 matrix.rotate(h_angle) paint.setWorldMatrix(matrix) pts.setPoints([-20,0,0,-20,300,0,0,20]) paint.drawPolygon(pts) matrix.rotate(-h_angle) m_angle = (self.time.minute()-15)*6 matrix.rotate(m_angle) paint.setWorldMatrix(matrix) pts.setPoints([-10,0,0,-10,400,0,0,10]) paint.drawPolygon(pts) matrix.rotate(-m_angle) for i in range(0,12): paint.setWorldMatrix(matrix) paint.drawLine(450,0, 500,0) matrix.rotate(30) a = TQApplication(sys.argv) clock = AnalogClock() clock.resize(100,100) a.setMainWidget(clock) clock.show() a.exec_loop()