其他分享
首页 > 其他分享> > PyQT 的信号和槽

PyQT 的信号和槽

作者:互联网

一、基本概念

信号与槽是Qt的核心机制,也是PyQt5编程时对象之间通信的基础,在PyQt5中每一个QObject对象(包括各种窗口和控件)都支持信号与槽机制,通过信号与槽之间的关联,就可以实现对象之间的通信,当信号发射时,连接的槽函数就自动执行,在PyQt5中信号与槽是通过对象的 signal.connect() 连接的。

PyQt5使用信号与槽的主要特点:

二、信号和槽的使用

1. 使用内置的信号和槽

import sys
from PySide2.QtWidgets import QPushButton, QMessageBox, QApplication, QWidget

def pop_message():
    QMessageBox.information(widget, 'Pop messgae', 'OK')

app = QApplication(sys.argv)
widget = QWidget()
btn = QPushButton('Test Button', widget)
btn.clicked.connect(pop_message)
widget.resize(300,300)
widget.show()
sys.exit(app.exec_())

2. 使用自定义的信号和槽

# -*- coding: utf-8 -*-
 
import sys
from PySide2 import QtCore
from PySide2.QtWidgets import *
 
 
class WinForm(QWidget):
    # 自定义信号,不带参数
    button_clicked_signal = QtCore.Signal()
 
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setWindowTitle('自定义信号和槽函数示例')
        self.resize(300, 150)
        
        # 接收信号,连接到自定义槽函数
        self.button_clicked_signal.connect(self.pop_message)

    def pop_message(self):
        QMessageBox.information(self, 'Pop messgae', 'OK')

    def mousePressEvent(self, event):        # 重写鼠标按下事件
        if event.button() == QtCore.Qt.LeftButton:     # 当鼠标左键单击时
            self.button_clicked_signal.emit()     # 发射信号
 
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = WinForm()
    win.show()
    sys.exit(app.exec_())

标签:__,widget,self,PyQT,sys,信号,import
来源: https://www.cnblogs.com/cokefentas/p/16585224.html