pyqt信号槽连接
时间: 2023-07-04 12:09:34 浏览: 105
PyQt 是一个 Python 的 GUI 编程工具包,它提供了丰富的 GUI 组件和一套信号槽机制。信号槽机制是 PyQt 的重要特性之一,它能够实现不同组件之间的通信,让程序具有更好的交互性。
在 PyQt 中,信号和槽是两个重要的概念,信号是一种事件,当某个事件发生时,会发出一个信号;而槽是一个接收信号的函数,当信号被发出时,与之连接的槽函数会被自动调用。通过信号和槽的连接,可以实现组件之间的交互。
信号槽连接的方法有两种:一种是使用 connect() 方法进行连接,另一种是使用 @QtCore.pyqtSlot() 装饰器。
下面是一个使用 connect() 方法进行信号槽连接的例子:
```python
import sys
from PyQt5 import QtWidgets, QtCore
class MyWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.btn = QtWidgets.QPushButton("Click me", self)
self.btn.clicked.connect(self.on_btn_clicked)
def on_btn_clicked(self):
print("Button clicked")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个窗口,并在窗口中添加了一个按钮。当按钮被点击时,会发出一个 clicked 信号,我们使用 connect() 方法将这个信号连接到 on_btn_clicked() 槽函数上。当按钮被点击时,on_btn_clicked() 函数会被自动调用。
下面是一个使用 @QtCore.pyqtSlot() 装饰器进行信号槽连接的例子:
```python
import sys
from PyQt5 import QtWidgets, QtCore
class MyWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.btn = QtWidgets.QPushButton("Click me", self)
self.btn.clicked.connect(self.on_btn_clicked)
@QtCore.pyqtSlot()
def on_btn_clicked(self):
print("Button clicked")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们使用 @QtCore.pyqtSlot() 装饰器将 on_btn_clicked() 函数定义为一个槽函数,这样就不需要使用 connect() 方法进行信号槽连接了。当按钮被点击时,on_btn_clicked() 函数会被自动调用。
阅读全文