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

 

posted @ 2020-05-26 22:00  dageliu  阅读(184)  评论(0)    收藏  举报