Pyqt5 简明教程

PyQt5 - Drawing API

PyQt 中的所有 QWidget 类都是从 QPaintDevice 类派生的子类。 QPaintDevice 对可以通过 QPainter 绘图的二维空间进行抽象。画图设备的尺寸以从左上角开始的像素为单位进行测量。

All the QWidget classes in PyQt are sub classed from QPaintDevice class. A QPaintDevice is an abstraction of two dimensional space that can be drawn upon using a QPainter. Dimensions of paint device are measured in pixels starting from the top-left corner.

QPainter 类在窗口小部件和其他可绘制设备(如打印机)上执行低级绘制。通常情况下,它用于窗口小部件的绘制事件。 QPaintEvent 发生在窗口小部件的外观更新时。

QPainter class performs low level painting on widgets and other paintable devices such as printer. Normally, it is used in widget’s paint event. The QPaintEvent occurs whenever the widget’s appearance is updated.

通过调用 begin() 方法启用该绘制程序,而 end() 方法停用此绘制程序。其间,通过列在下一张表中的适当方法绘制所需模式。

The painter is activated by calling the begin() method, while the end() method deactivates it. In between, the desired pattern is painted by suitable methods as listed in the following table.

Sr.No.

Methods & Description

1

begin() Starts painting on the target device

2

drawArc() Draws an arc between the starting and the end angle

3

drawEllipse() Draws an ellipse inside a rectangle

4

drawLine() Draws a line with endpoint coordinates specified

5

drawPixmap() Extracts pixmap from the image file and displays it at the specified position

6

drwaPolygon() Draws a polygon using an array of coordinates

7

drawRect() Draws a rectangle starting at the top-left coordinate with the given width and height

8

drawText() Displays the text at given coordinates

9

fillRect() Fills the rectangle with the QColor parameter

10

setBrush() Sets a brush style for painting

11

setPen() Sets the color, size and style of pen to be used for drawing

Example

以下代码中使用了 PyQt 绘图方法的各种方法。

In the following code, various methods of PyQt’s drawing methods are used.

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Example(QWidget):
   def __init__(self):
      super(Example, self).__init__()
      self.initUI()

   def initUI(self):
      self.text = "hello world"
      self.setGeometry(100,100, 400,300)
      self.setWindowTitle('Draw Demo')
      self.show()

   def paintEvent(self, event):
      qp = QPainter()
      qp.begin(self)
      qp.setPen(QColor(Qt.red))
      qp.setFont(QFont('Arial', 20))
      qp.drawText(10,50, "hello Python")
      qp.setPen(QColor(Qt.blue))
      qp.drawLine(10,100,100,100)
      qp.drawRect(10,150,150,100)
      qp.setPen(QColor(Qt.yellow))
      qp.drawEllipse(100,50,100,50)
      qp.drawPixmap(220,10,QPixmap("pythonlogo.png"))
      qp.fillRect(20,175,130,70,QBrush(Qt.SolidPattern))
      qp.end()

def main():
   app = QApplication(sys.argv)
   ex = Example()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

上述代码生成以下输出 -

The above code produces the following output −

database handling outputs