PySide6.QtGui.QPen¶
- class QPen¶
QPen类定义了QPainter应该如何绘制线条和形状的轮廓。更多…概要¶
方法¶
def
__init__()def
brush()def
capStyle()def
color()def
dashOffset()def
dashPattern()def
isCosmetic()def
isSolid()def
joinStyle()def
miterLimit()def
__ne__()def
__eq__()def
setBrush()def
setCapStyle()def
setColor()def
setCosmetic()def
setDashOffset()def
setDashPattern()def
setJoinStyle()def
setMiterLimit()def
setStyle()def
setWidth()def
setWidthF()def
style()def
swap()def
width()def
widthF()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
一支笔有
style()、width()、brush()、capStyle()和joinStyle()。笔样式定义了线条类型。画笔用于填充由笔生成的描边。使用
QBrush类来指定填充样式。帽样式决定了可以使用QPainter绘制的线端帽,而连接样式描述了两条线之间的连接如何绘制。笔的宽度可以以整数(width())和浮点数(widthF())精度指定。线宽为零表示装饰笔。这意味着笔宽始终绘制为一像素宽,与画师设置的transformation无关。可以使用相应的
setStyle()、setWidth()、setBrush()、setCapStyle()和setJoinStyle()函数轻松修改各种设置(请注意,在更改画笔属性时必须重置画家的画笔)。例如:
painter = QPainter(self) pen = QPen(Qt.green, 3, Qt.DashDotLine, Qt.RoundCap, Qt.RoundJoin) painter.setPen(pen)
这相当于
painter = QPainter(self) QPen pen # creates a default pen pen.setStyle(Qt.DashDotLine) pen.setWidth(3) pen.setBrush(Qt.green) pen.setCapStyle(Qt.RoundCap) pen.setJoinStyle(Qt.RoundJoin) painter.setPen(pen)
默认的画笔是一个宽度为1的实心黑色画笔,具有方形端点样式(Qt::SquareCap)和斜角连接样式(Qt::BevelJoin)。
此外,
QPen提供了color()和setColor()便利函数,分别用于提取和设置画笔的颜色。画笔也可以进行比较和流式处理。有关绘画的更多信息,请参阅Paint System文档。
笔样式¶
Qt 提供了几种内置样式,由 Qt::PenStyle 枚举表示:



Qt::SolidLine
Qt::DashLine
Qt::DotLine



Qt::DashDotLine
Qt::DashDotDotLine
Qt::CustomDashLine
只需使用
setStyle()函数将笔样式转换为内置样式之一,除了我们稍后会提到的Qt::CustomDashLine样式。将样式设置为Qt::NoPen告诉画师不要绘制线条或轮廓。默认的笔样式是Qt::SolidLine。自 Qt 4.1 起,还可以使用
setDashPattern()函数指定自定义的虚线模式,该函数隐式地将笔的样式转换为 Qt::CustomDashLine。模式参数,一个 QList,必须指定为偶数个 qreal 条目,其中条目 1, 3, 5… 是虚线,2, 4, 6… 是空格。例如,上面显示的自定义模式是使用以下代码创建的:pen = QPen() dashes = QList() space = 4 dashes << 1 << space << 3 << space << 9 << space << 27 << space << 9 << space pen.setDashPattern(dashes)
请注意,虚线模式是以笔宽的单位指定的,例如,宽度为10的长度为5的虚线长度为50像素。
可以使用
dashPattern()函数检索当前设置的虚线模式。使用isSolid()函数来确定笔是否具有实心填充。帽样式¶
线帽样式定义了使用
QPainter绘制线条端点的方式。线帽样式仅适用于宽线条,即当宽度为1或更大时。Qt::PenCapStyle枚举提供了以下样式:


Qt::SquareCap
Qt::FlatCap
Qt::RoundCap
Qt::SquareCap 样式是一个方形线端,它覆盖端点并超出端点一半线宽。Qt::FlatCap 样式是一个方形线端,不覆盖线的端点。而 Qt::RoundCap 样式是一个圆形线端,覆盖端点。
默认是 Qt::SquareCap。
当笔宽为0或1时,是否绘制端点取决于帽样式。使用Qt::SquareCap或Qt::RoundCap时会绘制端点,使用Qt::FlatCap时则不会绘制。
连接样式¶
连接样式定义了如何使用
QPainter绘制两条连接线之间的连接。连接样式仅适用于宽线,即当宽度为1或更大时。Qt::PenJoinStyle枚举提供了以下样式:


Qt::BevelJoin
Qt::MiterJoin
Qt::RoundJoin
Qt::BevelJoin 样式填充两条线之间的三角形缺口。Qt::MiterJoin 样式延伸两条线以在角度处相交。而 Qt::RoundJoin 样式则填充两条线之间的圆弧。
默认是 Qt::BevelJoin。
当应用Qt::MiterJoin样式时,可以使用
setMiterLimit()函数来指定斜接连接可以从连接点延伸多远。miterLimit()用于减少线条接近平行时线条连接之间的伪影。miterLimit()必须以笔宽的单位指定,例如,宽度为10的斜接限制为5,长度为50像素。默认的斜接限制为2,即笔宽的两倍像素。- __init__()¶
构造一个默认的黑色实线笔,宽度为1。
- __init__(style)
- Parameters:
样式 –
PenStyle
构造一个宽度为1且具有给定
style的黑色笔。另请参阅
- __init__(color)
- Parameters:
颜色 –
QColor
构造一个宽度为1且具有给定
color的实线笔。另请参阅
- __init__(pen)
- Parameters:
笔 –
QPen
构造一个与给定
pen相同的笔。- __init__(brush, width[, s=Qt.SolidLine[, c=Qt.SquareCap[, j=Qt.BevelJoin]]])
- Parameters:
brush –
QBrushwidth – 浮点数
s –
PenStylec –
PenCapStylej –
PenJoinStyle
使用指定的
brush、width、笔的style、cap样式和join样式构造一支笔。返回用于填充此笔生成的描边的画笔。
另请参阅
- capStyle()¶
- Return type:
返回笔的帽样式。
另请参阅
setCapStyle()Cap Style返回此画笔的笔刷颜色。
另请参阅
- dashOffset()¶
- Return type:
浮点数
返回笔的虚线偏移量。
另请参阅
- dashPattern()¶
- Return type:
.qreal列表
返回此画笔的虚线模式。
- isCosmetic()¶
- Return type:
布尔
如果笔是装饰性的,则返回
true;否则返回false。化妆笔用于绘制无论应用于
QPainter的任何变换都具有恒定宽度的笔画。使用化妆笔绘制形状可以确保其轮廓在不同比例因子下具有相同的厚度。默认情况下,零宽度笔是装饰性的。
另请参阅
- isSolid()¶
- Return type:
布尔
如果笔具有实心填充,则返回
true,否则返回false。另请参阅
- joinStyle()¶
- Return type:
返回笔的连接样式。
另请参阅
setJoinStyle()连接 样式- miterLimit()¶
- Return type:
浮点数
返回笔的斜接限制。斜接限制仅在连接样式设置为Qt::MiterJoin时相关。
另请参阅
setMiterLimit()连接 样式如果笔与给定的
pen不同,则返回true;否则返回false。如果两支笔的样式、宽度或颜色不同,则它们不同。另请参阅
operator==()如果笔等于给定的
pen,则返回true;否则返回false。如果两支笔具有相同的样式、宽度和颜色,则它们相等。另请参阅
operator!=()设置用于填充此笔生成的描边的画笔为给定的
brush。另请参阅
- setCapStyle(pcs)¶
- Parameters:
pcs –
PenCapStyle
将笔的帽样式设置为给定的
style。默认值为Qt::SquareCap。另请参阅
capStyle()Cap 样式将此画笔的颜色设置为给定的
color。另请参阅
- setCosmetic(cosmetic)¶
- Parameters:
cosmetic – 布尔值
根据
cosmetic的值,将此笔设置为装饰性或非装饰性。另请参阅
- setDashOffset(doffset)¶
- Parameters:
doffset – 浮点数
设置此笔的虚线偏移量(虚线图案上的起点)为指定的
offset。偏移量以用于指定虚线图案的单位进行测量。
例如,一个模式中,每个笔画长度为四个单位,随后是两个单位的间隔,当绘制为线条时,将从笔画开始。
然而,如果虚线偏移量设置为4.0,任何绘制的线条将从间隔开始。偏移量值小于4.0将导致部分笔画首先绘制,而偏移量值在4.0到6.0之间将导致线条从部分间隔开始。
- setDashPattern(pattern)¶
- Parameters:
pattern – qreal的列表
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
将此笔的虚线模式设置为给定的
pattern。这会隐式地将笔的样式转换为Qt::CustomDashLine。模式必须指定为偶数个正数条目,其中条目1、3、5…是破折号,条目2、4、6…是空格。例如:

pen = QPen() dashes = QList() space = 4 dashes << 1 << space << 3 << space << 9 << space << 27 << space << 9 << space pen.setDashPattern(dashes)
虚线模式以笔宽的单位指定;例如,宽度为10的5长度虚线是50像素长。请注意,宽度为零的笔相当于宽度为1像素的装饰笔。
每个虚线也受到端点样式的影响,因此设置为方形端点的1像素虚线将在每个方向上延伸0.5像素,导致总宽度为2。
请注意,默认的线帽样式是Qt::SquareCap,这意味着方形线帽会覆盖端点并超出端点一半的线宽。
- setJoinStyle(pcs)¶
- Parameters:
pcs –
PenJoinStyle
将笔的连接样式设置为给定的
style。默认值为Qt::BevelJoin。另请参阅
joinStyle()连接 样式- setMiterLimit(limit)¶
- Parameters:
limit – 浮点数
将此笔的斜接限制设置为给定的
limit。
斜接限制描述了斜接连接可以从连接点延伸多远。这用于减少线条接近平行时线条连接之间的伪影。
此值仅在笔样式设置为Qt::MiterJoin时有效。该值以笔宽的单位指定,例如,宽度为10的斜接限制为5,则长度为50像素。默认的斜接限制为2,即笔宽的两倍(以像素为单位)。
另请参阅
miterLimit()setJoinStyle()Join Style将笔样式设置为给定的
style。请参阅Qt::PenStyle文档以获取可用样式的列表。自Qt 4.1起,还可以使用
setDashPattern()函数指定自定义虚线模式,该函数隐式将笔的样式转换为Qt::CustomDashLine。- setWidth(width)¶
- Parameters:
width – 整数
将笔的宽度设置为给定的
width像素,精度为整数。线宽为零表示使用装饰笔。这意味着无论画家的
transformation设置如何,笔宽始终绘制为一像素宽。不支持设置负值的笔宽。
另请参阅
- setWidthF(width)¶
- Parameters:
width – 浮点数
将笔的宽度设置为给定的
width,以像素为单位,具有浮点精度。线宽为零表示使用装饰笔。这意味着无论画家的
transformation如何,笔宽始终绘制为一像素宽。不支持设置负值的笔宽。
另请参阅
返回笔的样式。
另请参阅
setStyle()Pen 样式将笔
other与此笔交换。此操作非常快速且永远不会失败。- width()¶
- Return type:
整数
返回具有整数精度的笔宽。
另请参阅
- widthF()¶
- Return type:
浮点数
返回具有浮点精度的笔宽。
另请参阅
