
- PyQt 教程
- PyQt - 首页
- PyQt - 简介
- PyQt - 环境搭建
- PyQt - Hello World
- PyQt - 主要类
- PyQt - 使用 Qt Designer
- PyQt - 元对象
- PyQt 信号与槽
- PyQt - 信号和槽
- PyQt - 支持和信号
- PyQt - 未绑定和已绑定信号
- PyQt - 使用 PyQtSignal 创建新的信号
- PyQt - 连接、断开和发射信号
- PyQt - 槽装饰器
- PyQt - 槽连接
- PyQt 布局
- PyQt - 布局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本控件
- PyQt - 基本控件
- PyQt - Qlabel 控件
- PyQt - QLineEdit 控件
- PyQt - QPushButton 控件
- PyQt - QRadioButton 控件
- PyQt - QCheckBox 控件
- PyQt - QComboBox 控件
- PyQt - QSpinBox 控件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 控件
- PyQt - QFontComboBox 控件
- PyQt - QDoubleSpinBox 控件
- PyQt - QToolBox 控件
- PyQt - QDialog 类
- PyQt - QMessageBox
- PyQt - 多文档界面
- PyQt - 拖放操作
- PyQt 绘图 API
- PyQt - 绘图 API
- PyQt 数据库
- PyQt - 数据库操作
- PyQt 核心知识
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 类
- PyQt 有用资源
- PyQt - 快速指南
- PyQt - 有用资源
- PyQt - 讨论
PyQt - 信号与槽
与以顺序方式执行的控制台模式应用程序不同,基于 GUI 的应用程序是事件驱动的。函数或方法会响应用户的操作(例如单击按钮、从集合中选择项目或鼠标点击等,称为事件)而执行。
用于构建 GUI 界面的控件充当此类事件的源。每个从 QObject 类派生的 PyQt 控件都设计为响应一个或多个事件发出“信号”。信号本身不会执行任何操作。相反,它会“连接”到一个“槽”。槽可以是任何可调用的 Python 函数。
在 PyQt 中,信号和槽之间的连接可以通过不同的方式实现。以下是最常用的技术:
QtCore.QObject.connect(widget, QtCore.SIGNAL(‘signalname’), slot_function)
当小部件发出信号时,调用槽函数的更便捷方法如下:
widget.signal.connect(slot_function)
假设当单击按钮时要调用一个函数。此处,clicked 信号需要连接到一个可调用函数。可以通过以下两种技术中的任何一种来实现:
QtCore.QObject.connect(button, QtCore.SIGNAL(“clicked()”), slot_function)
或者
button.clicked.connect(slot_function)
示例
在以下示例中,两个 QPushButton 对象(b1 和 b2)被添加到 QDialog 窗口中。我们希望分别在单击 b1 和 b2 时调用函数 b1_clicked() 和 b2_clicked()。
当单击 b1 时,clicked() 信号连接到 b1_clicked() 函数
b1.clicked.connect(b1_clicked())
当单击 b2 时,clicked() 信号连接到 b2_clicked() 函数
QObject.connect(b2, SIGNAL("clicked()"), b2_clicked)
示例
import sys from PyQt4.QtCore import * from PyQt4.QtGui import * def window(): app = QApplication(sys.argv) win = QDialog() b1 = QPushButton(win) b1.setText("Button1") b1.move(50,20) b1.clicked.connect(b1_clicked) b2 = QPushButton(win) b2.setText("Button2") b2.move(50,50) QObject.connect(b2,SIGNAL("clicked()"),b2_clicked) win.setGeometry(100,100,200,100) win.setWindowTitle("PyQt") win.show() sys.exit(app.exec_()) def b1_clicked(): print "Button 1 clicked" def b2_clicked(): print "Button 2 clicked" if __name__ == '__main__': window()
以上代码产生以下输出:

输出
Button 1 clicked Button 2 clicked
广告