呆萌教你:使用Python 开发串口工具 5. 完善串口工具界面的触发函数(工具栏、状态栏、RadioButton、QSpinBox的设置)
- 🙈1. 获取发送文本框里的内容
- 🙈2. 工具栏的设置
- 🙈3. 状态栏的设置
- 🙈4. RadioButton的设置
- 🙈5. QSpinBox的设置
🙈1. 获取发送文本框里的内容
- 上节我们将按钮绑定了“send_info”函数,这样当单击“发送”按钮后,就会执行“send_info”函数。下面我们的任务是:在发送文本框中输入数据,单击“发送按钮”,在console中获取文本框的数据。
- 这时我们就需要用到Qtextedit一个重要函数:toPlainText()
def send_info(self):
print("点击了发送按钮")
print(self.ui.sender.toPlainText())
- 在send_info函数中增加print(self.ui.sender.toPlainText()),就可以获取文本框的数据。
🙈2. 工具栏的设置
- 工具栏中的图标绑定函数,需要使用“triggered.connect()” 函数:
# 工具栏绑定函数
self.ui.actionStart.triggered.connect(self.actionStart)
# 工具栏函数
def actionStart(self):
print("actionStart")
- 每绑定一个新的函数,都需要重新定义一个新的函数:
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
import Main
class Win_Main(QMainWindow):
def __init__(self, parent=None):
super(Win_Main, self).__init__(parent)
self.ui = Main.Ui_MainWindow()
self.ui.setupUi(self)
# 工具栏绑定函数
self.ui.actionStart.triggered.connect(self.actionStart)
self.ui.actionPause.triggered.connect(self.actionPause)
self.ui.actionStop.triggered.connect(self.actionStop)
self.ui.actionClear.triggered.connect(self.actionClear)
# 发送按钮函数
def send_info(self):
print("点击了发送按钮")
print(self.ui.sender.toPlainText())
# 工具栏函数
def actionStart(self):
print("actionStart")
def actionPause(self):
print("actionPause")
def actionClear(self):
print("actionClear")
def actionStop(self):
print("actionStop")
if __name__== "__main__":
app = QApplication(sys.argv)
# 界面实例化
Win_Main = Win_Main()
# 界面显示
Win_Main.show()
sys.exit(app.exec_())
- 执行以上代码,单击工具栏对应的图标就可以执行对应的函数:
- 增加快捷键:回到QtDesigner,在右下角动作编辑器中,双击快捷键,对话框中输入快捷键,即可绑定:
- 保存UI文件,编译UI文件后,可测试快捷键
🙈3. 状态栏的设置
- 状态栏位于主界面最下面一行:
- 状态栏常用的函数为:showMessage(),在初始化函数中增加如下代码:
self.ui.statusbar.showMessage("正在测试···")
🙈4. RadioButton的设置
- 当前RadioButton是没有默认值的,我们需要在初始化界面时增加默认值
- 初始化函数中增加如下代码:
# RadioButton初始化
self.ui.ASCII_receiver.setChecked(True)
self.ui.ASCII_sender.setChecked(True)
- 同时,我们可以对RadioButton绑定对应函数,绑定方法的函数为:toggled.connect():
self.ui.ASCII_receiver.toggled.connect(self.ASCII_receiver_action)
self.ui.HEX_receiver.toggled.connect(self.HEX_receiver_action)
self.ui.ASCII_sender.toggled.connect(self.ASCII_sender_action)
self.ui.HEX_sender.toggled.connect(self.HEX_sender_action)
- 此时运行SPT.py,下侧状态栏显示“正在测试···”;切换RadioButton会执行对应的函数:
🙈5. QSpinBox的设置
- 对QSpinBox设置包括:总量程、步进、设置循环、初始值
# QSpinBox 初始化
self.ui.time.setRange(100, 30000) # 设置总量程100ms~30s
self.ui.time.setSingleStep(100) # 步进100ms
self.ui.time.setWrapping(True) # 允许循环
self.ui.time.setValue(1000) # 初始值
- 当SpinBox的值发生改变时,我们也可以对这一动作绑定一个函数:
self.ui.time.valueChanged.connect(self.time_change) # 绑定函数
# QSpinBox绑定函数
def time_change(self):
value = self.ui.time.value()
print("time_change:", value)
- 当前代码如下:
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
import Main
class Win_Main(QMainWindow):
def __init__(self, parent=None):
super(Win_Main, self).__init__(parent)
self.ui = Main.Ui_MainWindow()
self.ui.setupUi(self)
# 工具栏绑定函数
self.ui.actionStart.triggered.connect(self.actionStart)
self.ui.actionPause.triggered.connect(self.actionPause)
self.ui.actionStop.triggered.connect(self.actionStop)
self.ui.actionClear.triggered.connect(self.actionClear)
# 状态栏
self.ui.statusbar.showMessage("正在测试···")
# RadioButton初始化
self.ui.ASCII_receiver.setChecked(True)
self.ui.ASCII_sender.setChecked(True)
self.ui.ASCII_receiver.toggled.connect(self.ASCII_receiver_action)
self.ui.HEX_receiver.toggled.connect(self.HEX_receiver_action)
self.ui.ASCII_sender.toggled.connect(self.ASCII_sender_action)
self.ui.HEX_sender.toggled.connect(self.HEX_sender_action)
# QSpinBox 初始化
self.ui.time.setRange(100, 30000) # 设置总量程100ms~30s
self.ui.time.setSingleStep(100) # 步进100ms
self.ui.time.setWrapping(True) # 允许循环
self.ui.time.setValue(1000) # 初始值
self.ui.time.valueChanged.connect(self.time_change) # 绑定函数
# 发送按钮函数
def send_info(self):
print("点击了发送按钮")
print(self.ui.sender.toPlainText())
# 工具栏函数
def actionStart(self):
print("actionStart")
def actionPause(self):
print("actionPause")
def actionClear(self):
print("actionClear")
def actionStop(self):
print("actionStop")
# RadioButton函数
def ASCII_receiver_action(self):
print("ASCII_receiver_action")
def HEX_receiver_action(self):
print("HEX_receiver_action")
def ASCII_sender_action(self):
print("ASCII_sender_action")
def HEX_sender_action(self):
print("HEX_sender_action")
# QSpinBox绑定函数
def time_change(self):
value = self.ui.time.value()
print("time_change:", value)
if __name__== "__main__":
app = QApplication(sys.argv)
# 界面实例化
Win_Main = Win_Main()
# 界面显示
Win_Main.show()
sys.exit(app.exec_())
- 运行SPT.py后,可以看到更改时间的值时,会运行对应的函数:
更多推荐
呆萌教你:使用Python 开发串口工具 5. 完善串口工具界面的触发函数(工具栏、状态栏、RadioButton、QSpinBox的设置)
发布评论