PyQt5是以Python语言为基础的GUI框架,使用它可以方便地开发响应式和美观的用户界面。PyQt5通过提供丰富的绘画API,可以用于绘制各种图形。本文将介绍Python的“PyQt5 绘画API”的完整使用攻略,包括使用绘画API绘图、文本和其他元素。最后提供两条示例说明。
绘制矩形和椭圆
可以使用PyQt5的Painter(绘图器)来绘制各种图形,如矩形和椭圆。请参考以下代码:
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QColor, QPen, QBrush
from PyQt5.QtWidgets import QWidget, QApplication
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(100,100,800,800)
self.setWindowTitle("绘图的例子")
self.show()
def paintEvent(self, event):
painter = QPainter()
painter.begin(self)
self.drawRectangles(painter)
self.drawEllipses(painter)
painter.end()
def drawRectangles(self, painter):
rect1 = self.rect().adjusted(10, 10, -10, -10)
rect2 = self.rect().adjusted(25, 25, -25, -25)
rect3 = self.rect().adjusted(40, 40, -40, -40)
brush1 = QBrush(QColor(255, 0, 0))
brush2 = QBrush(QColor(0, 255, 0))
brush3 = QBrush(QColor(0, 0, 255))
pen1 = QPen(Qt.SolidLine)
pen1.setColor(QColor(255, 0, 0))
pen1.setWidth(2)
pen2 = QPen(Qt.DotLine)
pen2.setColor(QColor(0, 255, 0))
pen2.setWidth(3)
pen3 = QPen(Qt.DashLine)
pen3.setColor(QColor(0, 0, 255))
pen3.setWidth(4)
painter.setBrush(brush1)
painter.setPen(pen1)
painter.drawRect(rect1)
painter.setBrush(brush2)
painter.setPen(pen2)
painter.drawRect(rect2)
painter.setBrush(brush3)
painter.setPen(pen3)
painter.drawRect(rect3)
def drawEllipses(self, painter):
width, height = self.width(), self.height()
brush1 = QBrush(QColor(255, 255, 0))
brush2 = QBrush(QColor(255, 0, 255))
brush3 = QBrush(QColor(0, 255, 255))
pen1 = QPen(Qt.SolidLine)
pen1.setColor(QColor(255, 255, 0))
pen1.setWidth(2)
pen2 = QPen(Qt.DotLine)
pen2.setColor(QColor(255, 0, 255))
pen2.setWidth(3)
pen3 = QPen(Qt.DashLine)
pen3.setColor(QColor(0, 255, 255))
pen3.setWidth(4)
rect1 = QRect(10, 10, width*0.3, height*0.3)
rect2 = QRect(50, 50, width*0.5, height*0.5)
rect3 = QRect(100, 100, width*0.7, height*0.7)
painter.setBrush(brush1)
painter.setPen(pen1)
painter.drawEllipse(rect1)
painter.setBrush(brush2)
painter.setPen(pen2)
painter.drawEllipse(rect2)
painter.setBrush(brush3)
painter.setPen(pen3)
painter.drawEllipse(rect3)
app = QApplication(sys.argv)
w = MyWidget()
sys.exit(app.exec_())
这段代码定义了一个MyWidget类,继承自QWidget。在构造函数中,我们使用setGeometry()
设置小部件的大小和位置。在paintEvent()函数中,我们获取绘图器Painter,然后使用setBrush()和setPen()设置颜色和线条样式。最后,使用drawRect()和drawEllipse()方法实现绘图。
显示文本
PyQt5提供了很多方法来显示不同样式的文本,可以是单行文本或多行文本,可以使用字体、颜色等。
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QColor, QPen, QBrush, QFont
from PyQt5.QtWidgets import QWidget, QApplication
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(100,100,800,800)
self.setWindowTitle("绘图的例子")
self.show()
def paintEvent(self, event):
painter = QPainter()
painter.begin(self)
self.drawText(painter)
painter.end()
def drawText(self, painter):
text = "Hello PyQt5!"
font = QFont("Verdana", 20, QFont.Bold)
pen = QPen(Qt.black)
pen.setWidth(3)
painter.setPen(pen)
painter.setFont(font)
painter.drawText(self.rect(), Qt.AlignCenter, text)
app = QApplication(sys.argv)
w = MyWidget()
sys.exit(app.exec_())
该示例定义了一个继承自QWidget的MyWidget类,在paintEvent()函数中,我们获取绘图器Painter,然后使用setFont()方法设置字体属性,使用setPen()方法设置颜色和线条样式,最后使用drawText()方法显示文本。
结语
以上是两个使用PyQt5绘图API的示例,希望对您的开发工作有所帮助。PyQt5提供了许多不同风格的部件和布局管理器,使得GUI开发变得更加容易。在开发使用PyQt5构建的应用程序时,请确保了解并合理使用PyQt5的所有API,这有助于优化代码、提高程序的可靠性和性能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 绘画API - Python技术站