ラズパイデスクトップでPyQt5入門(20)Painting in PyQt5(2)
こんばんは。國松です。
お久しぶりです。前回から大分間が開いてしまいましたがPyQt5のtutorialの続きです。
参考サイト
ZetCode PyQt5 tutorial
3Colours
色(Colours)は赤・緑・青(RGB)の強度値の組み合わせを表すオブジェクトです。
有効なRGB値の範囲は0~255です。様々な方法で色を定義できます。
10進数値または16進数値で定義。
RGBにアルファ値を加えたRGBAで定義することもできます。
アルファ値255は完全な不透明度、0は完全な透明度を表します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #!/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つのカスタムスタイルを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #!/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) の線が描かれます。
今回はここまでにしたいと思います。