PyQt5 学习(2)
2022年1月9日 周日
继续上面的学习记录,为了更好的学习效果,界面全部纯代码实现,上一个文档实现了一个简单的界面,可以展示和选择电脑已有的串口,并对串口进行打开和关闭操作,并且添加了一个用于显示串口数据的文本浏览框(未实现功能)。
为了使功能更全面,打算继续在界面添加数据发送功能(需要添加的控件有两个CheckBox(一个用于控制hex显示或者text显示数据、一个用于勾选后再发送框数据后添加换行),两个PushBotton(一个用于发送数据,一个用于清除接收框的数据清除),一个TextEdit(用于编辑发送文本)。同时添加一个可以用于改变发送编辑框和数据浏览窗口边界的控件Splitter容器。保持小控件大小不变,添加SpacerItem控件填充空白区域,同时需要添加一个定时器用于对接收数据进行分包处理)
界面处理
添加上面的控件和布局后界面的东西比较多,考虑单独封装成一个函数来处理,修改后界面整体可分为三个部分,第一部分为串口控制部分以及一个清除显示按钮,第二部分为收发数据显示栏以及发送数据的编辑框,第三部分为发送编辑框。整理后代码如下
def set_UI(self):
self.serialCombox = QComboBox()
self.baudCombox = QComboBox()
self.openSerialButton = QPushButton("Open serial")
spacer = QSpacerItem(0, 0, QSizePolicy.Policy.Expanding) #填充空间控件,用于填充布局的空白部分
clearRcvBrowser = QPushButton("Clear data")
clearRcvBrowser.setLayoutDirection(Qt.LayoutDirection.RightToLeft) #设置清除按钮为右对齐
self.dataBrowser = QTextBrowser()
self.sndEdit = QTextEdit() # 发送数据编辑框
self.sndButton = QPushButton("Send") # 发送按钮
self.sndButton.setLayoutDirection(Qt.LayoutDirection.RightToLeft)
self.hexCheck = QCheckBox("Hex") # 是否显示hex格式数据检查框
self.hexCheck.setLayoutDirection(Qt.LayoutDirection.RightToLeft)
self.crlfCheck = QCheckBox("CRLF")# 是否在发送数据末尾自动添加换行检查框
self.crlfCheck.setLayoutDirection(Qt.LayoutDirection.RightToLeft)
spacer1 = QSpacerItem(0, 0, QSizePolicy.Policy.Expanding)
splitter = QSplitter(Qt.Vertical) # 分割器,用于设置可移动边界,添加接收数据浏览框和发送数据编辑框
splitter.addWidget(self.dataBrowser)
splitter.addWidget(self.sndEdit)
layoutH = QHBoxLayout() # 第一排横向布局
layoutH.addWidget(self.baudCombox)
layoutH.addWidget(self.serialCombox)
layoutH.addWidget(self.openSerialButton)
layoutH.addSpacerItem(spacer)
layoutH