6.3.3 颜色
《零基础入门玩转 PyQt5》 邀请码: LWskm3AS
颜色是一个物体显示的RGB的混合色,RBG值的范围是0255,定义颜色最常见的方式就是RGB和16进制表示法,也可以使用RGBA,增加了一个透明度的选项,透明度值的范围是01,0代表完全透明
程序展示
本例中,画三个颜色的矩形
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QColor, QBrush
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 350, 100)
self.setWindowTitle('Colours')
self.show()
def paintEvent(self, e):
qp = QPainter()
qp.begin(self)
self.drawRectangles(qp)
qp.end()
def drawRectangles(self, qp):
col = QColor(0, 0, 0)
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)
e = Example()
sys.exit(app.exec_())
程序预览:
代码解释
使用16进制的方式定义颜色
color = QColor(0, 0, 0)
color.setNamedColor('#d4d4d4')
定义了一个笔刷,并画出了一个矩形。笔刷是用来画一个物体的背景。drawRect()
有四个参数,分别是矩形的x、y、w、h。 然后用笔刷和矩形进行绘画
qp.setBrush(QColor(200, 0, 0))
qp.drawRect(10, 15, 90, 60)
6.3.4 画笔
QPen
是基本的绘画对象,能用来画直线、曲线、矩形框、椭圆、多边形和其他形状
程序展示
本例中,用不同的笔画了6条直线
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt
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):
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)
pen.setDashPattern([1, 4, 5, 4])
qp.setPen(pen)
qp.drawLine(20, 240, 250, 240)
if __name__ == '__main__':
app = QApplication(sys.argv)
e = Example()
sys.exit(app.exec_())
程序预览:
代码解释
新建一个QPen
对象,设置颜色黑色,宽2像素,这样就能看出来各个笔样式的区别。Qt.SolidLine
是预定义样式的一种
pen = QPen(Qt.black, 2, Qt.SolidLine)
自定义笔的样式,定义为Qt.CustomDashLine
,然后调用setDashPattern()
方法。数字列表是线的样式,奇数位定义的是空格,偶数位为线长,数字越大,空格或线长越大,比如本例定义的是1像素线,4像素空格,5像素线,4像素空格
pen.setStyle(Qt.CustomDashLine)
pen.setDashPattern([1, 4, 5, 4])
qp.setPen(pen)