qt designer qgraphicsview加载图片

时间:2015-06-21 12:48:55

标签: python qt qt4 pyqt4 qt-designer

我使用Qt Designer构建GUI,Gui有一个水平布局的中央窗口小部件,以及QGraphicView(名称为leftImage和RightImage)的子窗口

在菜单栏中,我创建了两个按钮 - "打开左图像"和"打开右图像"

我已设法使用此按钮(它会打开打开的对话框并正确选择正确的文件),但我无法在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以查看加载的图像?

2 个答案:

答案 0 :(得分: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

现在可以使用了

答案 1 :(得分:0)

在您的问题中,您使用的是angular.module('myApp', [ 'ngRoute', 'myApp.view1', 'myApp.view2', 'myApp.version' ]). config(['$routeProvider', function($routeProvider) { $routeProvider .when('/', { templateUrl: 'partials/home.html', controller: 'HomeCtrl' }) .otherwise({redirectTo: '/'}); }]); ,它不是用于显示图片的正确小部件。

正如您发现的那样,使用QGraphicView并设置像素图。

此外,QLabel无法正常工作 这应该是self.LeftImage = QtGui.QPixmap(image)

而且:在你的"开放"例程,通过self.LeftImage.setPixmap(QtGui.QPixmap(image))引用窗口小部件 - 而不是self.LeftImage,因为您将它们分配给中央窗口小部件,但它们不属于(在层次结构中)它们。