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

时间:2018-07-19 19:38:42

标签: python python-3.x qt 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类,因为我试图编写诸如绘画应用程序之类的东西,因此我将能够编写菜单,并且能够在图片上书写。

任何建议将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:2)

  

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_())

enter image description here