pyqt5 控件在 QMainWindow 中无法显示在 QWidget 中正常

pyqt5 控件在 QMainWindow 中无法显示在 QWidget 中正常_第1张图片
继承 QMainWindow 的窗口添加控件,需要先使用self.setCentralWidget 去添加一个 CentralWidget,然后再向这个控件里面去添加其它的控件

from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget
from PyQt5 import QtCore, QtGui, QtWidgets


class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__(parent=None)
        self.setupUi()

    def setupUi(self):
        self.setWindowTitle('RFID tool')
        self.resize(500, 346)
        self.centralWidget = QtWidgets.QWidget()
        self.setCentralWidget(self.centralWidget)
        self.gridLayout = QtWidgets.QGridLayout()
        self.eidt_1 = QtWidgets.QLineEdit()
        self.gridLayout.addWidget(self.eidt_1, 0, 0, 1, 1)
        self.eidt_2 = QtWidgets.QLineEdit()
        self.gridLayout.addWidget(self.eidt_2, 0, 1, 1, 1)
        self.centralWidget.setLayout(self.gridLayout)


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    mainui = MainWindow()
    mainui.show()
    sys.exit(app.exec_())

继承 QWidget 的窗口直接使用 setLayout 即可把布局中添加的容器显示出来

from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget
from PyQt5 import QtCore, QtGui, QtWidgets


class MainWindow(QWidget):

    def __init__(self):
        super().__init__(parent=None)
        self.setupUi()

    def setupUi(self):
        self.setWindowTitle('RFID tool')
        self.resize(500, 346)
        self.gridLayout = QtWidgets.QGridLayout()
        self.eidt_1 = QtWidgets.QLineEdit()
        self.gridLayout.addWidget(self.eidt_1, 0, 0, 1, 1)
        self.eidt_2 = QtWidgets.QLineEdit()
        self.gridLayout.addWidget(self.eidt_2, 0, 1, 1, 1)
        self.setLayout(self.gridLayout)



if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    mainui = MainWindow()
    mainui.show()
    sys.exit(app.exec_())

总结: 继承 QMainWindow 的窗口比继承 QWidget 的窗口要显示控件,必须设置一个 setCentralWidget,让后再在这个控件上去添加其它的控件才能显示出来。

参考1
参考2

你可能感兴趣的:(pyqt,python,开发语言)