【问题标题】:QPixmap / QPainter showing black window backgroundQPixmap / QPainter 显示黑色窗口背景
【发布时间】:2020-11-25 20:40:08
【问题描述】:

我正在学习 Martin Fitzpatrick 的 PyQt5 书中的一个示例。当我运行以下代码时,背景是黑色的,没有画线:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets, uic
from PyQt5.QtCore import Qt

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.label = QtWidgets.QLabel()

        canvas = QtGui.QPixmap(400, 300)

        self.label.setPixmap(canvas)
        self.setCentralWidget(self.label)
        self.draw_something()

    def draw_something(self):
        painter = QtGui.QPainter(self.label.pixmap())
        painter.drawLine(10, 10, 300, 200)
        painter.end()


app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()

预期的结果在左边:

【问题讨论】:

    标签: python pyqt5 qpainter qpixmap


    【解决方案1】:

    默认情况下,QPixmap 使用的内存不会被效率清理,因此它的字节不会改变,如 the docs 所示:

    QPixmap::QPixmap(int width, int height)

    用 给定宽度和高度。如果宽度或高度为零,则为空 pixmap 已构建。

    警告: 这将创建一个带有未初始化数据的 QPixmap。 调用 fill() 在绘制之前用适当的颜色填充像素图 使用 QPainter 进行处理。

    (强调我的)

    解决方法是使用填充来设置背景颜色:

    canvas = QtGui.QPixmap(400, 300)
    canvas.fill(QtGui.QColor("white"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 2017-08-30
      相关资源
      最近更新 更多