PyQt5 - 如何在 QMainWindow 类中显示图像?

The*_*hip 5 python qt python-3.x qmainwindow pyqt5

我正在尝试在 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_())
Run Code Online (Sandbox Code Playgroud)

但它不显示图像,只是打开窗口。我坚持QMainWindow上课是因为我正在尝试编写类似绘画应用程序的东西,因此我将能够编写菜单,并且我将能够在图片上书写。

任何建议,将不胜感激。

谢谢。

S. *_*ick 7

QMainWindow.setCentralWidget(widget)

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

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_())
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明