#!/usr/bin/python3
# -*- coding: utf-8 -*-

"""
ZetCode PyQt4 tutorial 

In this example we draw 6 lines using
different pen styles. 

author: Jan Bodnar
website: zetcode.com 
last edited: September 2011
"""

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):
    
    def __init__(self):
        super(Example, self).__init__()
        
        self.initUI()
        
    def initUI(self):      

        self.setGeometry(300, 300, 280, 270)
        self.setWindowTitle('Pen styles')
        self.show()

    def paintEvent(self, e):

        qp = QtGui.QPainter() # Создаём класс для рисования
        qp.begin(self)        # начинаем рисовать на self, то есть на виджете.
        self.drawLines(qp)    # Само рисование проходит в методе drawLines.
        qp.end()              # Чтобы результаты всегда корректно отображались,
                              # у объектов класса QPainter надо вызвать метод end.
        
    def drawLines(self, qp):
      
        pen = QtGui.QPen(QtCore.Qt.black, 2, QtCore.Qt.SolidLine)
        # Аргументы: цвет, ширинац линии, тип линии (здесь -- сплошная линия).

        qp.setPen(pen) # Будем рисовать на qp с помощью объекта pen.
        qp.drawLine(20, 40, 250, 40) # проведём линию от точки (20, 40) до точки (250, 40).
                                     # Координаты относительно левого верхнего угла, ось y
                                     # направлена вниз.

        pen.setStyle(QtCore.Qt.DashLine) # Поменем тип линии на штриховой пунктир.
        qp.setPen(pen) # Заново установим ручку, которой будем рисовать, 
        qp.drawLine(20, 80, 250, 80) # Проведём линию с новой ручкой.

        pen.setStyle(QtCore.Qt.DashDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 120, 250, 120)

        pen.setStyle(QtCore.Qt.DotLine)
        qp.setPen(pen)
        qp.drawLine(20, 160, 250, 160)

        pen.setStyle(QtCore.Qt.DashDotDotLine)
        qp.setPen(pen)
        qp.drawLine(20, 200, 250, 200)

        pen.setStyle(QtCore.Qt.CustomDashLine)
        pen.setDashPattern([1, 4, 5, 4])
        qp.setPen(pen)
        qp.drawLine(20, 240, 250, 240)
              
        
def main():
    
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()