Python QPixmap/QPainter显示黑色窗口背景

Python QPixmap/QPainter显示黑色窗口背景,python,pyqt5,qpainter,qpixmap,Python,Pyqt5,Qpainter,Qpixmap,我遵循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__()

我遵循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_()
预期结果在左侧:

默认情况下,QPixmap使用的内存不会按效率进行清理,因此其字节不会发生更改,如下所示:

QPixmap::QPixmapint width,int height构造一个具有 给定宽度和高度。如果宽度或高度为零,则为空 构建了pixmap。 警告:这将使用未初始化的数据创建QPixmap。呼叫 填充以在绘制前使用适当的颜色填充像素贴图 用油漆工把它涂上

重点矿山

解决方案是使用填充设置背景色:

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

默认情况下,QPixmap使用的内存不会按效率进行清理,因此其字节不会发生更改,如下所示:

QPixmap::QPixmapint width,int height构造一个具有 给定宽度和高度。如果宽度或高度为零,则为空 构建了pixmap。 警告:这将使用未初始化的数据创建QPixmap。呼叫 填充以在绘制前使用适当的颜色填充像素贴图 用油漆工把它涂上

重点矿山

解决方案是使用填充设置背景色:

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