如何将Pixmap绘制到Qgraphicsview?

2024-10-01 00:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写代码,改变一些图像时,滚动移动。我用Qt设计器绘制了两个按钮,一个滚动条和一个QGraphicsView。在

我尝试了很多方法来绘制一个QPixmap图像。删除QGraphicsView不是问题,但我想画这个pixmap。在

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4 import uic
from PyQt4.QtGui import QImage
import qimage2ndarray

import matplotlib
from matplotlib import colors as C
from matplotlib import pyplot, cm
from matplotlib.figure import Figure

import dicom
import numpy
import ReadDicom as RD
import Matrixhandler as MH

form_class = uic.loadUiType('Dicom_GUI.ui')[0]

class Mainwindow(QMainWindow, form_class):
    def __init__(self):
        super().__init__() 
        self.setupUi(self)
        self.connect(self.CTREAD, SIGNAL("clicked()"), self.ct_clicked)
        self.connect(self.STRUCTREAD, SIGNAL("clicked()"), self.st_clicked)
        self.CTSlider.valueChanged.connect(self.valchange)

    def ct_clicked(self):
        self.dcmList = []
        self.CTList = []
        self.dcmList = RD.dcmRead()
        RD.dSave(self.dcmList)
        self.dcmList = RD.dcmReadAll()
        self.CTList = RD.readCTdcm(self.dcmList)
        dsCT1 = dicom.read_file(self.CTList[0])
        self.x, self.y, self.z, self.dx, self.dy, self.dz, self.ConstPixelDims, self.ConstdoseDims, self.ConstdoseDimsalt, self.ConstPixelSpacing, self.ConstDoseSpacing = MH.GetCoordi(self.CTList)
        self.ArrayCT = numpy.zeros(self.ConstPixelDims, float)
        self.ArrayCT = MH.GetCTImg(self.CTList, self.ArrayCT)
        self.CTSlider.setMinimum(0)
        self.CTSlider.setMaximum(len(self.CTList)-1)

    def st_clicked(self):
        print('st clicked')

    def valchange(self):
        self.vals = self.CTSlider.value()
        self.Temparray = self.ArrayCT[:,:,self.vals]
        self.imgsh = qimage2ndarray.gray2qimage(self.Temparray)
        self.pixemap = QPixmap.fromImage(self.imgsh)

    if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = Mainwindow()
    myWindow.show()
    app.exec_()

Tags: fromimportselfmatplotlibdefasrdclass