如何在PyQt4中加载文件?

时间:2015-06-23 19:43:27

标签: python image pyqt4

大家好!我目前正在尝试制作一个可以加载/显示图像的程序。到目前为止,我已经成功创建了一个能够浏览和选择文件的按钮。但是,之后我不知道该怎么办。我的目标是至少成功加载和显示图像。我对编程还很新,但我愿意学习!非常感谢你!

下面是我创建的代码。我真的只需要帮助我接下来应该做什么。我迷失了接下来应该写的功能。谢谢!

__author__ = 'Jay'

import sys
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):

    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(0, 0, 500, 500)
        self.setWindowTitle('Laser Scan')
        self.setWindowIcon(QtGui.QIcon('Laser.png'))
        self.home()

        self.show()

    def home(self):
        btn = QtGui.QPushButton("Select File...", self)
        btn.clicked.connect(self.file_open)
        btn.resize(100, 25)
        btn.move(0, 10)


        self.show()

    def file_open(self):
        name = QtGui.QFileDialog.getOpenFileName(self, 'Open File')
        file = open(name, 'r')

def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())

run()

1 个答案:

答案 0 :(得分:0)

在Qt中显示文件中的图像非常简单。你只需要找到合适的小部件。在这种情况下,我建议您使用QLabel。这可以显示QPixmap,其中包含从文件构造所需的代码:

def file_open(self):
    name = QtGui.QFileDialog.getOpenFileName(self, 'Open File')
    qp = QtGui.QPixmap(name)
    self.ql = QtGui.QLabel(None)
    self.ql.setPixmap(qp)
    self.ql.move(200,200)
    self.ql.show()

请注意我在此处将QLabel分配给实例变量self.ql的方式:因为它是顶级窗口,所以它不是QObject层次结构中的父级,因此它如果我们不坚持参考它将立即被垃圾收集。无论如何,如果我们打算对新的小部件做任何事情,我们将来会想要这个参考。

但是,您的代码暗示您要在已构建的顶级窗口中显示图像。这并不是特别困难:你可以像按钮一样将它添加到父窗口。但是,您需要更动态地布置此窗口。例如,QVBoxLayout可能适合此处。