2015-11-27 3 views
4

Я новичок в qt-дизайнере и python. Я хочу создать простой проект, чтобы отобразить изображение.
Я использовал виджет «Графика», и я назвал его «graphicsView». Я написал эти функции:показ изображения с виджетами графического представления

def function(self): 
    image=cv2.imread('C:/Users/Hamid/Desktop/1.jpg',1) 
    self.show_frame_in_display(image) 

def show_frame_in_display(self,frame): 
    image = QImage(frame, frame.shape[1], frame.shape[0], 
        frame.strides[0], QImage.Format_RGB888) 
    self.graphicsView.setPixmap(QPixmap.fromImage(image)) 

, но он дает эту ошибку:

File "C:/Users/Hamid/Documents/untitled/hamid.py", line 54, in show_frame_in_display 
self.graphicsView.setPixmap(QPixmap.fromImage(image)) 
AttributeError: 'QGraphicsView' object has no attribute 'setPixmap' 

что я должен делать? Спасибо.

+0

Вы можете использовать 'label' для отображения изображения вместо этого ... –

+0

Спасибо за ваш ответ. не могли бы вы рассказать мне, как я должен его использовать? –

+0

Я только что написал свой ответ ... –

ответ

1

Вы можете использовать QtGui.QLabel для отображения изображений, а также, таким образом:

label_Image = QtGui.QLabel(frame) 
image_path = 'c:\image_path.jpg' #path to your image file 
image_profile = QtGui.QImage(image_path) #QImage object 
image_profile = image_profile.scaled(250,250, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation) # To scale image for example and keep its Aspect Ration  
label_Image.setPixmap(QtGui.QPixmap.fromImage(image_profile)) 

Impplementing приведенный выше код в исходном коде:

def function(self): 
    image_path='c:\image_path.jpg' #path to your image file 
    self.show_frame_in_display(image_path) 

def show_frame_in_display(self,image_path): 
    frame = QtGui.QWidget() #Replace it with any frame you will putting this label_image on it 
    label_Image = QtGui.QLabel(frame) 
    image_profile = QtGui.QImage(image_path) #QImage object 
    image_profile = image_profile.scaled(250,250, aspectRatioMode=QtCore.Qt.KeepAspectRatio, transformMode=QtCore.Qt.SmoothTransformation) # To scale image for example and keep its Aspect Ration  
    label_Image.setPixmap(QtGui.QPixmap.fromImage(image_profile)) 
+0

Извините, я использовал ваш код, но у меня получилась эта ошибка: объект «MyApp» не имеет атрибута «image_profile» –

+0

Извините, произошла ошибка TYPO, обновил мой ответ ... –

+0

В qt designer Я назвал метку «label_image». где я должен его использовать? –