|
|
|
#!/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()
|