PyQt5 学习笔记(1)
在学习PyQt5的布局时,发现如下问题:当使用PyQt5.QtWidgets.QMainWindow()创建主窗口,并向主窗口添加布局时,会报警告"QWidget::setLayout: Attempting to set QLayout "" on QMainWindow "", which already has a layout",大意是说QMainWindow已经有layout了,QWidget::setLayout无法再向QMainWindow添加QLayout。而且,QLayout中的Widget无法在窗口中显示。

解决此问题的方法:将QMainWindow()修改为QWidget(),即可解决此问题。

代码如下:
1 import sys 2 import PyQt5 3 from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFileDialog 4 from PyQt5 import QtCore, QtWidgets 5 from PyQt5.QtGui import QPalette, QIcon 6 7 if __name__ == "__main__": 8 # 新建应用程序 9 app = QApplication(sys.argv) 10 # 新建主窗口 11 mainWindow = PyQt5.QtWidgets.QWidget() 12 # icon = QIcon.addPixmap() 13 # mainWindow.setWindowIcon(QIcon(r'D:\VSCode\pic\test.png')) 14 15 port = QtWidgets.QComboBox() 16 port.addItems(['com1', 'com2', 'com3', 'com4', 'com5', 'com6', 'com7', 'com8', 'com9']) 17 18 baud = QtWidgets.QComboBox() 19 baud.addItems(['9600', '115200']) 20 21 check = QtWidgets.QComboBox() 22 check.addItems(['None', 'ODD', 'EVEN', 'MARK', 'SPACE']) 23 24 dataLen = QtWidgets.QComboBox() 25 dataLen.addItems(['5', '6', '7', '8', '9']) 26 27 stopbit = QtWidgets.QComboBox() 28 stopbit.addItems(['1', '1.5', '2']) 29 30 vbox = QVBoxLayout() 31 vbox.addWidget(port) 32 vbox.addWidget(baud) 33 vbox.addWidget(check) 34 vbox.addWidget(dataLen) 35 vbox.addWidget(stopbit) 36 37 mainWindow.setLayout(vbox) 38 # 窗口大小设置 39 mainWindow.resize(800, 600) 40 mainWindow.setWindowTitle('串口助手') 41 42 # 窗口显示 43 mainWindow.show() 44 sys.exit(app.exec_())

浙公网安备 33010602011771号