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_())
我正在尝试用服装尺寸画点,但换笔没有任何作用。我画的每个点都是一个像素大小。这是我的代码:
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_())