Tekenen met pen
Op deze pagina:
De pen hoeft geen ononderbroken lijnen te tekenen. Onderbroken lijnen, stippellijnen bijvoorbeeld, kunnen ook.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt
class Venster(QWidget):
def __init__(self):
super(Venster, self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(400, 400, 280, 270)
self.setWindowTitle('Pen stijlen')
self.show()
def paintEvent(self, e):
qp = QPainter()
qp.begin(self)
self.drawLines(qp)
qp.end()
def drawLines(self, qp):
pen = QPen(Qt.black, 2, Qt.SolidLine)
x1 = 20
x2 = 250
# De lijnen lopen van x1,y1 naar x2,y2
# Omdat y1 en y2 hier steeds aan
# elkaar gelijk zijn,
# zijn het horizontale lijnen
qp.setPen(pen)
qp.drawLine(x1, 40, x2, 40)
pen.setStyle(Qt.DashLine)
qp.setPen(pen)
qp.drawLine(x1, 80, x2, 80)
pen.setStyle(Qt.DashDotLine)
qp.setPen(pen)
qp.drawLine(x1, 120, x2, 120)
pen.setStyle(Qt.DotLine)
qp.setPen(pen)
qp.drawLine(x1, 160, x2, 160)
pen.setStyle(Qt.DashDotDotLine)
qp.setPen(pen)
qp.drawLine(x1, 200, x2, 200)
pen.setStyle(Qt.CustomDashLine)
# het patroon hier is parameter1 lijn,
# parameter2 lege ruimte,
# parameter3 lijn,
# parameter4 lege ruimte, enz.
# de parameters worden opgegeven in pixels
pen.setDashPattern([1, 6, 5, 3])
qp.setPen(pen)
qp.drawLine(x1, 240, x2, 240)
def main():
app = QApplication(sys.argv)
window = Venster()
sys.exit(app.exec_())
if __name__ == '__main__':
main()