目录
一、实战场景
实战场景:Python 中 PyQt6 的绘制文本
二、主要知识点
三、菜鸟实战
从绘制一些 Unicode 文本开始。
import sys
from PyQt6.QtWidgets import QWidget, QApplication
from PyQt6.QtGui import QPainter, QColor, QFont
from PyQt6.QtCore import Qt
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.text = "Лев Николаевич Толстой\nАнна Каренина"
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('Drawing text')
self.show()
def paintEvent(self, event):
qp = QPainter()
qp.begin(self)
self.drawText(event, qp)
qp.end()
def drawText(self, event, qp):
qp.setPen(QColor(168, 34, 3))
qp.setFont(QFont('Decorative', 10))
qp.drawText(event.rect(), Qt.Alignment.AlignCenter, self.text)
def main():
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec())
if __name__ == '__main__':
main()
本例中,绘制了一些西里尔字母,并水平和垂直对齐了文本。
def paintEvent(self, event): ...
使用 paintEvent 完成绘画。
qp = QPainter()
qp.begin(self)
self.drawText(event, qp)
qp.end()
QPainter
类负责所有的底层绘制。所有的绘制都在开始和结束方法之间。实际的绘制被委托给 drawText 方法。
qp.setPen(QColor(168, 34, 3))
qp.setFont(QFont('Decorative', 10))
这里定义了绘制文本的笔触和字体。
qp.drawText(event.rect(), Qt.Alignment.AlignCenter, self.text)
drawText 方法在窗口上绘制文本。paintEvent 的rect方法返回需要更新的矩形。用 Qt.Alignment.AlignCenter
在两个维度上对齐文本。
菜鸟实战,持续学习!