Eric6中使用PYQT5在窗口显示图片

Eric6的图形设计界面使用的是PYQT5的工作界面

基本环境,win10,Python3,pyqt5,Eric6

如下图,新建一个窗口,然后拖一个graphics view部件上去,窗口UI完成

Eric6中使用PYQT5在窗口显示图片_第1张图片

接下来是代码:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(653, 483)
        self.hxx = QtWidgets.QGraphicsView(Form)
        self.hxx.setGeometry(QtCore.QRect(-5, 1, 661, 481))
        self.hxx.setObjectName("hxx")                               #以上代码是eirc6编译窗口后自动生成的
        self.hxx.scene = QtWidgets.QGraphicsScene()      #创建一个图片元素的对象
        item=QtWidgets.QGraphicsPixmapItem(p)           #创建一个变量用于承载加载后的图片
        self.hxx.scene.addItem(item)                                  #将加载后的图片传递给scene对象
        self.hxx.setScene(self.hxx.scene)                             #这个我也不知道是做了个啥
        
        self.retranslateUi(Form)                                           #eirc6编译窗口后自动生成
        QtCore.QMetaObject.connectSlotsByName(Form)#eirc6编译窗口后自动生成


    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()                    #以上代码是eirc6编译窗口后自动生成的
    p=QtGui.QPixmap()
    p.load('timg.jpg')    
                                   #加载图片
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

需要注意QGraphicsScene() 与QGraphicsPixmapItem这2个类在qt4中的父类似乎是QtGui,但是在qt5中变成了QtWidgets.对此不是很确定.

我在4.5手册中查到的他们是属于QtGui模块的,但是在用PYTHON3运行文件后出现如下错误:

module 'PyQt5.QtGui' has no attribute 'QGraphicsScene'

手册中的内容是:

QGraphicsScene Class Reference

[QtGui module]

The QGraphicsScene class provides a surface for managing a large number of 2D graphical items.

最后上代码完成效果图:


Eric6中使用PYQT5在窗口显示图片_第2张图片

本人刚刚学习编程,对代码的注释全部为自己的理解,如有错误,欢迎大佬指正

图片是百度随便搜的一张图,不承担任何商业责任


重要参考http://blog.sina.com.cn/s/blog_9b78c91101019.html

你可能感兴趣的:(Python)