2015-06-21 78 views
1

我一直在使用Qt设计建立一个GUI,桂有一个中央物件是一个水平布局,和孩子这是QGraphicView(名称leftImage和右图)Qt设计的QGraphicsView负荷图像

在菜单栏中我'已经创建了两个按钮 - “打开左侧图像”和“打开右侧图像”

我已经设法使用这个按钮(它打开打开对话框并正确选择正确的文件),但我看不到GUI上的图像。

这是我的代码:

#!/usr/bin/env python 
import sys 
from PyQt4 import QtCore, QtGui, uic 

form_class = uic.loadUiType("try2gui.ui")[0]     

class MyWindowClass(QtGui.QMainWindow, form_class): 
def __init__(self, parent=None): 
    QtGui.QMainWindow.__init__(self, parent)  
self.setupUi(self) 

self.initMenu() 

image = QtGui.QImage('image.pgm') 

self.LeftImage = QtGui.QPixmap(image) 
self.RightImage = QtGui.QPixmap(image) 
self.show() 

def initMenu (self): 
self.actionOpen_Left.triggered.connect(self.open_left) 
self.actionOpen_Right.triggered.connect(self.open_Right) 
    self.actionExit.triggered.connect(self.close) 

def open_left(self): 
    fileName = QtGui.QFileDialog.getOpenFileName(self, "Open File", QtCore.QDir.currentPath()) 
    if fileName: 
     image = QtGui.QImage(fileName) 
     if image.isNull(): 
      QtGui.QMessageBox.information(self, "Image Viewer", "Cannot load %s." % fileName) 
      return 

    self.centralwidget.LeftImage = QtGui.QPixmap(image)  
    self.scaleFactor = 1.0 
    print fileName 

def open_Right(self): 
    fileName = QtGui.QFileDialog.getOpenFileName(self, "Open File", QtCore.QDir.currentPath()) 
    if fileName: 
     image = QtGui.QImage(fileName) 
     if image.isNull(): 
      QtGui.QMessageBox.information(self, "Image Viewer", "Cannot load %s." % fileName) 
      return 

    self.RightImage = QtGui.QPixmap(image) 
    self.scaleFactor = 1.0 

if __name__ == '__main__': 
app = QtGui.QApplication(sys.argv) 
myWindow = MyWindowClass(None) 
myWindow.show() 

app.exec_() 

我怎样才能更新GUI看到加载的图像?

回答

0

我已经找到了解决办法:

我已经改变了开左功能是:(同去open_right):

def open_left(self): 
    fileName = QtGui.QFileDialog.getOpenFileName(self, "Open File", QtCore.QDir.currentPath()) 
    if fileName: 
     image = QtGui.QImage(fileName) 
     if image.isNull(): 
      QtGui.QMessageBox.information(self, "Image Viewer", "Cannot load %s." % fileName) 
      return 

#added this code: 
     leftPixelMap = QtGui.QPixmap(fileName) 
     lable = QtGui.QLabel(self.LeftImage) 
     lable.setPixmap(leftPixelMap) 
     lable.show() 

    self.scaleFactor = 1.0 

,现在

0

在工作您的问题使用了QGraphicView,这不是显示图片的正确部件。

正如您发现的解决方案一样,请使用QLabel并设置一个像素图。

另外,self.LeftImage = QtGui.QPixmap(image)不起作用。
这应该是self.LeftImage.setPixmap(QtGui.QPixmap(image))

和:在你的“开放式”程序,通过self.LeftImage参考部件 - 不是.centralwidget,因为你将它们分配到中央部件,但它们并不拥有(在层次结构)给他们。