大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ラズパイデスクトップでPyQt5入門(20)Painting in PyQt5(2)

著者:國松亜紗子
公開日:2020/06/22
最終更新日:2020/06/22
カテゴリー:技術情報

こんばんは。國松です。
お久しぶりです。前回から大分間が開いてしまいましたがPyQt5のtutorialの続きです。

参考サイト
ZetCode PyQt5 tutorial

【PythonでGUI】PyQt5 -始めの一歩-

3Colours
色(Colours)は赤・緑・青(RGB)の強度値の組み合わせを表すオブジェクトです。
有効なRGB値の範囲は0~255です。様々な方法で色を定義できます。
10進数値または16進数値で定義。
RGBにアルファ値を加えたRGBAで定義することもできます。
アルファ値255は完全な不透明度、0は完全な透明度を表します。

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

"""
This example draws three rectangles in three #differnt colours
"""

from PyQt5.QtWidgets import QWidget,QApplication
from PyQt5.QtGui import QPainter,QColor,QBrush
import sys

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

    def initUI(self):
        self.setGeometry(300,300,350,100)
        self.setWindowTitle('Colors')
        self.show()

    def paintEvent(self,e):
        qp = QPainter()
        qp.begin(self)
        self.drawRectangle(qp)
        qp.end()

    def drawRectangle(self,qp):
        #長方形の周囲の線の色を指定(RGB)
        col = QColor(0,0,0)
        #長方形の周りの線の色を指定(16進数)
        col.setNamedColor('#d4d4d4')
        #ペンの色をセット
        qp.setPen(col)

        qp.setBrush(QColor(200,0,0))
        qp.drawRect(10,15,90,60)

        qp.setBrush(QColor(255,80,0,160))
        qp.drawRect(130,15,90,60)

        qp.setBrush(QColor(25,0,90,200))
        qp.drawRect(250,15,90,60)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


qp.setBrush(QColor(200、0、0))
qp.drawRect(10、15、90、60)
ここでブラシを定義し、長方形を描きます。 ブラシは、図形の背景を描くために使用される基本的なグラフィックスオブジェクトです。 drawRect()メソッドは4つのパラメーターを受け入れます。 最初の2つは、軸上のxとyの値です。 3番目と4番目のパラメーターは、長方形の幅と高さです。 このメソッドは、現在のペンとブラシを使用して四角形を描画します。

4Qpen(ペンのスタイル)
QPenは基本的なグラフィックオブジェクトです。
長方形、楕円、多角形、またはその他の形状の線、曲線、輪郭を描くために使用されます。
今回は6本の線を違ったスタイルで描いていきます。5つの定義済みのスタイルと1つのカスタムスタイルを使用します。

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

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

from PyQt5.QtWidgets import QWidget,QApplication
from PyQt5.QtGui import QPainter,QPen
from PyQt5.QtCore import Qt
import sys

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

    def initUI(self):
        self.setGeometry(300,300,280,270)
        self.setWindowTitle('pen styles')
        self.show()

    def paintEvent(self,e):
        qp = QPainter()
        qp.begin(self)
        self.drawLines(qp)
        qp.end()

    def drawLines(self,qp):
        #QPenオブジェクトの作成(色:黒 幅:2px スタイル:solidline)
        pen = QPen(Qt.black,2,Qt.SolidLine)

        #上で定義したペンのスタイルを設定
        qp.setPen(pen)
        qp.drawLine(20,40,250,40)

        pen.setStyle(Qt.DashLine)
        qp.setPen(pen)
        qp.drawLine(20,80,250,80)

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

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

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

        #カスタムスタイルペンの作成
        pen.setStyle(Qt.CustomDashLine)
        #setDashPattern([1px dash, 4px space,5px dash,4px space])
        pen.setDashPattern([1,4,5,4])
        qp.setPen(pen)
        qp.drawLine(20,240,250,240)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

54行目からが自作のカスタムペンの作成です
pen.Style(Qt.CustomDashLine) を設定
set.DashPattern()メソッドを呼び出す
メソッドには偶数個の引数が必要です。奇数はダッシュ、偶数にはスペースを定義します。
数字が大きいほどダッシュまたはスペースが大きくなります。
今回の例ではset.DashPatter(1,4,5,4)を設定しているので(1px dash, 4px space, 5px dash, 4px space) の線が描かれます。

今回はここまでにしたいと思います。

    上に戻る