呆萌教你:使用Python 开发串口工具 5. 完善串口工具界面的触发函数(工具栏、状态栏、RadioButton、QSpinBox的设置)

呆萌教你:使用Python 开发串口工具 5. 完善串口工具界面的触发函数(工具栏、状态栏、RadioButton、QSpinBox的设置)

🙈1. 获取发送文本框里的内容

  1. 上节我们将按钮绑定了“send_info”函数,这样当单击“发送”按钮后,就会执行“send_info”函数。下面我们的任务是:在发送文本框中输入数据,单击“发送按钮”,在console中获取文本框的数据。
  2. 这时我们就需要用到Qtextedit一个重要函数:toPlainText()
    def send_info(self):
        print("点击了发送按钮")
        print(self.ui.sender.toPlainText())
  1. 在send_info函数中增加print(self.ui.sender.toPlainText()),就可以获取文本框的数据。
    在这里插入图片描述

🙈2. 工具栏的设置

  1. 工具栏中的图标绑定函数,需要使用“triggered.connect()” 函数:
	# 工具栏绑定函数
		self.ui.actionStart.triggered.connect(self.actionStart)
	# 工具栏函数
    def actionStart(self):
        print("actionStart")
  1. 每绑定一个新的函数,都需要重新定义一个新的函数:
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_())
  1. 执行以上代码,单击工具栏对应的图标就可以执行对应的函数:
    在这里插入图片描述
  2. 增加快捷键:回到QtDesigner,在右下角动作编辑器中,双击快捷键,对话框中输入快捷键,即可绑定:
    在这里插入图片描述
  3. 保存UI文件,编译UI文件后,可测试快捷键

🙈3. 状态栏的设置

  1. 状态栏位于主界面最下面一行:
    在这里插入图片描述
  2. 状态栏常用的函数为:showMessage(),在初始化函数中增加如下代码:
self.ui.statusbar.showMessage("正在测试···")

🙈4. RadioButton的设置

  1. 当前RadioButton是没有默认值的,我们需要在初始化界面时增加默认值
    在这里插入图片描述
  2. 初始化函数中增加如下代码:
		# RadioButton初始化
       	self.ui.ASCII_receiver.setChecked(True)
        self.ui.ASCII_sender.setChecked(True)
  1. 同时,我们可以对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)
  1. 此时运行SPT.py,下侧状态栏显示“正在测试···”;切换RadioButton会执行对应的函数:
    在这里插入图片描述

🙈5. QSpinBox的设置

  1. 对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)  # 初始值
  1. 当SpinBox的值发生改变时,我们也可以对这一动作绑定一个函数:
		self.ui.time.valueChanged.connect(self.time_change)  # 绑定函数
# QSpinBox绑定函数
    def time_change(self):
        value = self.ui.time.value()
        print("time_change:", value)
  1. 当前代码如下:
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_())
  1. 运行SPT.py后,可以看到更改时间的值时,会运行对应的函数:
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小Demo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值