如何在pyqt qdock小部件中添加图像

问题描述 投票:0回答:1

我正在尝试使用pyqt创建图像查看器。我正在尝试创建一个qdockwidget来显示图像。我创建了qPixmap对象,并尝试将其添加为qdockwidget中的小部件。

from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import (QApplication, QMainWindow)
from PyQt5.QtCore import Qt

from reportlab.graphics.charts.piecharts import Pie
from reportlab.graphics.shapes import *

from PIL import ImageQt

from reportlab.graphics import renderPM

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.resize(800, 600)

        dockWidget = QtWidgets.QDockWidget()
        dockWidget.setWindowTitle("Image Viewer")

        d = Drawing(200, 100)
        pc = Pie()
        pc.x = 65
        pc.y = 0
        pc.width = 100
        pc.height = 100
        pc.data = [10, 20, 30, 40, 50, 60]
        pc.labels = ['a', 'b', 'c', 'd', 'e', 'f']
        pc.slices.strokeWidth = 0.5
        pc.slices[3].popout = 10
        pc.slices[3].strokeWidth = 2
        pc.slices[3].strokeDashArray = [2, 2]
        pc.slices[3].labelRadius = 1.75
        pc.slices[3].fontColor = colors.red
        d.add(pc)

        test = renderPM.drawToPILP(d)

        QtImage1 = ImageQt.ImageQt(test)
        QtImage2 = QtGui.QImage(QtImage1)
        pixmap = QtGui.QPixmap.fromImage(QtImage2)
        label = QtWidgets.QLabel('testing', self)
        label.setPixmap(pixmap)

        #dockWidget.setWidget(pixmap)
        dockWidget.setFloating(False)
        self.addDockWidget(Qt.RightDockWidgetArea, dockWidget)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWidget = MainWindow()
    myWidget.show()

    sys.exit(app.exec_())
python python-3.x pyqt5 qpixmap qdockwidget
1个回答
0
投票

QPixmap不是视觉元素,而是具有优化了可在小部件中呈现的图像信息的对象,因此无法将其直接添加到QDockWidget,但是必须使用允许其显示的小部件,例如QLabel:

dockWidget.setWidget(label)
© www.soinside.com 2019 - 2024. All rights reserved.