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

编程入门 行业动态 更新时间:2024-10-26 19:27:53

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

    • 🙈1. 获取发送文本框里的内容
    • 🙈2. 工具栏的设置
    • 🙈3. 状态栏的设置
    • 🙈4. RadioButton的设置
    • 🙈5. 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后,可以看到更改时间的值时,会运行对应的函数:

更多推荐

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

本文发布于:2023-06-13 19:12:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1393309.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:串口   工具   教你   工具栏   函数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!