呆萌教你:使用Python 开发串口工具 4. 绑定信号与槽函数

本文详细介绍了如何在Qt环境中利用Python开发串口工具,重点讲解了信号与槽的概念及其应用。首先,阐述了信号与槽在Qt编程中的作用,接着展示了如何在QtDesigner中重命名控件、编辑信号和槽函数,最后通过实例演示了如何绑定信号到槽函数,并在PyCharm中实现函数调用,从而完成发送按钮的点击事件处理。
摘要由CSDN通过智能技术生成

🙈1. 关于信号与槽

  1. 信号与槽(Signal & Slot)是 Qt 编程的基础,也是 Qt 的一大创新。因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。
  2. 信号(Signal)就是在特定情况下被发射的事件,例如PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的 CurrentIndexChanged() 信号。
  3. 槽(Slot)就是对信号响应的函数。槽就是一个函数,与一般的C++函数是一样的,可以定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。

🙈2. 信号与槽在QtDesigner的应用

2.1 砍掉上节遗留的小尾巴:重新命名控件
  1. 上节中,我们创建了窗口工具的主界面,为了让后面的代码清晰,我们需要先把创建的控件进行重命名。各个控件的名称在右侧“对象查看器”可以看到,选中界面的某个控件,右侧对应的控件就会被选中,双击后就可以命名。当前的命名情况如图:
    在这里插入图片描述

  2. 为了方便后面代码的开发,我们需要定下命名规则。以下是我的命名,各位可以按照自己的喜好命名,简洁易懂即可:
    Group Box:

    1. 串口设置:com_setting
    2. 接收设置:receive_setting
    3. 发送设置:send_setting
    4. 发送按钮:send
    5. 接收框:receiver
    6. 发送框:sender
      在这里插入图片描述
  3. 接下来,我们打开com_setting,对里面具体的控件进行命名:
    在这里插入图片描述

  4. 打开receive_setting和send_setting标签,对里面的控件重命名:
    在这里插入图片描述

  5. 其他控件的命名如下:
    在这里插入图片描述

2.2 编辑信号/槽
  1. 点击如图所示的图标,进入“编辑信号/槽”:
    在这里插入图片描述
  2. 左键单击“发送”按钮,不松并拖曳出一个类似“接地”的图标后松开鼠标:
    在这里插入图片描述
  3. 弹出对话框,我们单击左侧“clicked”,再单击右侧下方“编辑”按钮添加槽函数。该操作的目的是:当我们“clicked”这个按钮后,会执行右侧绑定的槽函数。当前我们没有添加槽函数,所以右侧槽函数列表是空的。

在这里插入图片描述

  1. 单击绿色的“+”按钮,添加一个名为“send_info”的函数,点击“OK”:
    在这里插入图片描述
  2. 回到刚刚对话框,这时左面会出现我们刚刚新建的“send_info”的函数,同时选中左右两边的“clicked”和“send_info”,点击OK:
    在这里插入图片描述
  3. 这时可以看到按钮处会多了“clicked”和“send_info”两个方框,表明绑定成功,点击保存。
    在这里插入图片描述
2.3 运行槽函数
  1. 回到PyCharm,选中Main.ui后进行编译:
    在这里插入图片描述
  2. 回到SPT.py,dubug一下,这时会看到console报错:
    在这里插入图片描述
  3. 这表明在SPT.py中没有我们刚刚在QtDesigner中绑定的“send_info”函数,我们在SPT.py的Win_Main类中,增加“send_info”函数:
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)
        
    # 该处增加send_info函数:
    def send_info(self):
        print("点击了发送按钮")

if __name__== "__main__":
    app = QApplication(sys.argv)

    # 界面实例化
    Win_Main = Win_Main()

    # 界面显示
    Win_Main.show()

    sys.exit(app.exec_())
  1. 此时点击“发送”按钮,console中会出现“点击了发送按钮”,表明函数绑定成功。
    在这里插入图片描述
  2. 其他的控件绑定的方法与此方法大同小异,区别在于不同控件有不同的出发槽函数方式,如QcomboBox具有如下触发方式,常用的是currentTextChange,其他方式小伙伴可以查一下:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只小Demo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值