Mooreの小站

Moore的个人小站

Python 第七节

2025-04-10

一、自定义信号和综合案例

1、信号和槽

  • 调用槽函数时,如何传参?

  1. 本身有些晚信号可以直接传递参数:如输入框的textChanged是可以传递参数的

  2. 有些信号如clicked函数,本身不支持传递参数,可以使用lambda匿名函数表达式

# ...
self.btn1.clicked.connect( lambda : self.open_file("hello"))
# ...
def open_file(self, text):
  print(text)
# 当btn1按下时,控制台将输出Hello

2、自定义信号

(1)如何创建自定义信号

pyqtSingal()
  • 目标:自定义一个信号和槽函数,当鼠标按下的时候发射信号,调用槽函数

  • 步骤:

    1. 创建自定义信息

    2. 创建槽函数

    3. 将信号的槽函数管理起来

    4. 发射信号(需要契机,比如鼠标按下时发射)

(2)自定义信号如何传递参数

  • 信号要携带参数

  • 槽函数声明时带有参数

  • 信号发射的时候,将参数一起传递给槽函数

(3)跨区域(窗口)发射信号

  • 考虑:

    • 信号在哪里发射

    • 槽函数在哪里定义

    • 信号在哪里连接槽函数

3、事件

  • 事件源

    • 触发这个事件的源头

  • 事件类型

    • 鼠标单击,双击,长按,键盘按下等

  • 事件对象

    • 记录一些时间相关信息

    • 鼠标事件:鼠标触发的位置

    • 键盘事件:按了哪个键