如何在PyQT窗口中加载/显示图像?

2024-05-31 17:16:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了下面的代码来创建一个PyQT窗口。

class PrettyWidget(QtGui.QWidget):

    def __init__(self):
        super(PrettyWidget, self).__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(600,300,1000,600)
        self.center()
        self.setWindowTitle('Browser')

        self.show()    

    def center(self):
        qr = self.frameGeometry()
        cp = QtGui.QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

def main():
    app = QtGui.QApplication(sys.argv)
    w = PrettyWidget()
    app.exec_()

if __name__ == '__main__':
    main()

我想在这个窗口中插入/嵌入一个图像(比如image.jpg,路径已知)。它最好在窗口的底部,不应该消耗整个窗口。我该怎么做?


Tags: 代码selfappinitmaindefcppyqt
1条回答
网友
1楼 · 发布于 2024-05-31 17:16:29

我们可以使用QLabel来显示图像,因为它有setPixmap方法,如下所示

lb = QtGui.QLabel(self)
pixmap = QtGui.QPixmap("{path/of/file}")
height_label = 100
lb.resize(self.width(), height_label)
lb.setPixmap(pixmap.scaled(lb.size(), QtCore.Qt.IgnoreAspectRatio))
self.show()  

完整代码:

class PrettyWidget(QtGui.QWidget):

    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent=parent)
        self.initUI()

    def initUI(self):
        self.resize(1000,600)
        self.center()
        self.setWindowTitle('Browser')

        self.lb = QtGui.QLabel(self)
        pixmap = QtGui.QPixmap("test.png")
        height_of_label = 100
        self.lb.resize(self.width(), height_of_label)
        self.lb.setPixmap(pixmap.scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
        self.show()    

    def resizeEvent(self, event):
        self.lb.resize(self.width(), self.lb.height())
        self.lb.setPixmap(self.lb.pixmap().scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
        QtGui.QWidget.resizeEvent(self, event)


    def center(self):
        qr = self.frameGeometry()
        cp = QtGui.QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

def main():
    app = QtGui.QApplication(sys.argv)
    w = PrettyWidget()
    app.exec_()

if __name__ == '__main__':
    main()

截图:

enter image description here

底部:

def initUI(self):
    self.resize(1000,600)
    self.center()
    self.setWindowTitle('Browser')

    self.lb = QtGui.QLabel(self)
    pixmap = QtGui.QPixmap("test.png")
    height_of_label = 100
    self.lb.resize(self.width(), height_of_label)
    self.lb.move(0, self.height() -self.lb.height())
    self.lb.setPixmap(pixmap.scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
    self.show()    

def resizeEvent(self, event):
    self.lb.resize(self.width(), self.lb.height())
    self.lb.setPixmap(self.lb.pixmap().scaled(self.lb.size(), QtCore.Qt.IgnoreAspectRatio))
    self.lb.move(0, self.height() -self.lb.height())
    QtGui.QWidget.resizeEvent(self, event)

截图:

enter image description here

相关问题 更多 >