首页 > 解决方案 > PyQt5 - 如何在 QMainWindow 类中显示图像?

问题描述

我正在尝试在 QMainWindow 类中显示图片:

from PyQt5.QtWidgets import QLabel, QMainWindow, QApplication
from PyQt5.QtGui import QPixmap
import sys


class Menu(QMainWindow):

    def __init__(self):
        super().__init__()
        self.setWindowTitle("Title")
        label = QLabel(self)
        pixmap = QPixmap('capture.png')
        label.setPixmap(pixmap)
        self.resize(pixmap.width(), pixmap.height())
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Menu()
    sys.exit(app.exec_())

但它不显示图像,只是打开窗口。我坚持QMainWindow上课,因为我正在尝试写一些类似于绘画应用程序的东西,所以我将能够写一个菜单,我将能够在图片上写字。

任何建议,将不胜感激。

谢谢。

标签: pythonpython-3.xqtpyqt5qmainwindow

解决方案


QMainWindow.setCentralWidget(小部件)

将给定的小部件设置为主窗口的中心小部件。

from PyQt5.QtWidgets import QLabel, QMainWindow, QApplication, QWidget, QVBoxLayout
from PyQt5.QtGui import QPixmap
import sys


class Menu(QMainWindow):

    def __init__(self):
        super().__init__()
        self.setWindowTitle("Title")
        
        self.central_widget = QWidget()               
        self.setCentralWidget(self.central_widget)    
        lay = QVBoxLayout(self.central_widget)
        
        label = QLabel(self)
        pixmap = QPixmap('logo.png')
        label.setPixmap(pixmap)
        self.resize(pixmap.width(), pixmap.height())
        
        lay.addWidget(label)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Menu()
    sys.exit(app.exec_())

在此处输入图像描述


推荐阅读