You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.0 KiB
75 lines
2.0 KiB
#!/usr/bin/env python
|
|
|
|
import sys, random
|
|
from PyTQt.tqt import *
|
|
|
|
TRUE = 1
|
|
FALSE = 0
|
|
|
|
MAXPOINTS = 2000; # maximum number of points
|
|
MAXCOLORS = 40;
|
|
|
|
#
|
|
# ConnectWidget - draws connected lines
|
|
#
|
|
|
|
class ConnectWidget(TQWidget):
|
|
def __init__(self):
|
|
TQWidget.__init__(self)
|
|
self.setEraseColor( TQt.white ) # white background
|
|
self.count = 0;
|
|
self.down = FALSE
|
|
|
|
self.points = []
|
|
self.colors = []
|
|
|
|
for i in range(MAXPOINTS): # init arrays
|
|
self.points.append(TQPoint())
|
|
for i in range(MAXCOLORS):
|
|
self.colors.append(TQColor( random.randint(0,255), random.randint(0,255), random.randint(0,255) ))
|
|
|
|
#
|
|
# Handles paint events for the connect widget.
|
|
#
|
|
def paintEvent(self, pe):
|
|
paint = TQPainter( self )
|
|
for i in range(self.count-1): # connect all points
|
|
for j in range(i+1, self.count):
|
|
paint.setPen( self.colors[random.randint(0,MAXCOLORS-1)] ) # set random pen color
|
|
paint.drawLine( self.points[i], self.points[j] ) # draw line
|
|
|
|
#
|
|
# Handles mouse press events for the connect widget.
|
|
#
|
|
def mousePressEvent(self, me):
|
|
self.down = TRUE
|
|
self.count = 0 # start recording points
|
|
self.erase() # erase widget contents
|
|
|
|
#
|
|
# Handles mouse release events for the connect widget.
|
|
#
|
|
def mouseReleaseEvent(self, me ):
|
|
self.down = FALSE # done recording points
|
|
self.update() # draw the lines
|
|
|
|
#
|
|
# Handles mouse move events for the connect widget.
|
|
#
|
|
def mouseMoveEvent(self, me):
|
|
if self.down and self.count < MAXPOINTS:
|
|
paint = TQPainter( self )
|
|
self.points[self.count] = TQPoint(me.pos()) # add point
|
|
paint.drawPoint( me.pos() ) # plot point
|
|
self.count = self.count+1
|
|
|
|
#
|
|
# Create and display a ConnectWidget.
|
|
#
|
|
a = TQApplication( sys.argv )
|
|
connect = ConnectWidget()
|
|
connect.setCaption( "PyTQt Example - Draw lines")
|
|
a.setMainWidget( connect )
|
|
connect.show()
|
|
a.exec_loop()
|