PyQt 信号和槽
与顺序执行的控制台模式应用程序不同,基于GUI的应用程序是事件驱动的。在用户执行动作(比如点击按钮、选择集合中的项目或鼠标点击等)时,函数或方法会被执行,这些动作被称为 事件 。
用于构建GUI界面的小部件作为这些事件的源头。每个PyQt小部件都是从QObject类派生而来,它们被设计为在一个或多个事件发生时发出 信号 。信号本身不执行任何操作,而是与一个 槽 进行“连接”。槽可以是任何可调用的Python函数。
在PyQt中,信号和槽之间的连接可以通过不同的方式实现。以下是最常用的技术:
当小部件发出信号时,通过以下方式更方便地调用槽函数:
假设当按钮被点击时,要调用一个函数。这里,点击信号要连接到一个可调用的函数。可以通过以下两种技术中的任何一种来实现。
或
示例
在以下示例中,向QDialog窗口添加了两个QPushButton对象(b1和b2)。我们希望在分别点击b1和b2时调用函数b1_clicked()和b2_clicked()。
当点击b1时,将clicked()信号连接到b1_clicked()函数上。
当b2被点击时,clicked()信号被连接到b2_clicked()函数。
示例
上面的代码产生以下输出−