QPainter 点大小为 1 像素,不能更改

QPainter point size is 1 pixel and can not be changed

我正在尝试用服装尺寸画点,但换笔没有任何作用。我画的每个点都是一个像素大小。这是我的代码:

class Diedrico(QWidget):
    def __init__(self, parent):
        super().__init__(parent)

    def paintEvent(self, event):
        painter = QPainter()
        pen = QPen(Qt.black)
        pen.setWidth(30)
        painter.setPen(pen)
        painter.begin(self)
        painter.drawPoint(10, 10)
        painter.end()

如果您 运行 您的脚本在 console/CMD 中,您将收到以下警告:

QPainter::setPen: Painter not active
QPainter::setPen: Painter not active

很明显你是在QPainter没有设备的情况下修改属性,所以解决方案是在setPen()之前使用begin()初始化设备,或者在构造函数中传递设备,另外还有end( ) 方法在这种情况下是不必要的,因为当 QPainter 被销毁时,将调用 end()。

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtWidgets import QApplication, QWidget


class Diedrico(QWidget):
    def paintEvent(self, event):
        painter = QPainter(self)
        # or
        # painter = QPainter()
        # painter.begin(self)
        pen = QPen(Qt.black)
        pen.setWidth(30)
        painter.setPen(pen)
        painter.drawPoint(10, 10)


if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    w = Diedrico()
    w.show()
    sys.exit(app.exec_())