PySide2信号与槽机制

1、信号与槽的两种写法
第一种情况:

from PySide2 import QtWidgets, QtCore
import sys
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QWidget()
    btn = QtWidgets.QPushButton(widget)
    btn.clicked.connect(widget.close)
    widget.show()
    sys.exit(app.exec_())

第二种情况:

from PySide2 import QtWidgets, QtCore
import sys
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QWidget()
    btn = QtWidgets.QPushButton(widget)
    QtCore.QObject.connect(btn,QtCore.SIGNAL("clicked()"),widget,QtCore.SLOT("close()"))
    widget.show()
    sys.exit(app.exec_())

2、自定义槽函数

from PySide2 import QtWidgets, QtCore
import sys 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QWidget()
    btn = QtWidgets.QPushButton(widget)
    @QtCore.Slot()
    def changeTex():
        btn.setText("ok")
    btn.clicked.connect(changeTex)    
    widget.show()
    sys.exit(app.exec_())

3、带参数槽函数
(1)lambad写法:

from PySide2 import QtWidgets,QtCore
import sys  
class MyForm(QtWidgets.QWidget):  
    def __init__(self, parent=None):  
        super(MyForm, self).__init__(parent)
        button1 = QtWidgets.QPushButton(self)   
        button1.clicked.connect(lambda: self.on_button(1))  
    def on_button(self, n):  
        print('Button {0} clicked'.format(n))  
  
if __name__ == "__main__":  
    import sys  
    app = QtWidgets.QApplication(sys.argv)  
    form = MyForm()  
    form.show()  
    app.exec_()  

(2)使用functools里的partial函数。

from functools import partial 
from PySide2 import QtWidgets,QtCore
import sys  
class MyForm(QtWidgets.QWidget):  
    def __init__(self, parent=None):  
        super(MyForm, self).__init__(parent)
        button1 = QtWidgets.QPushButton(self)   
        button1.clicked.connect(partial(self.on_button, 1))  
    def on_button(self, n):  
        print('Button {0} clicked'.format(n))  

if __name__ == "__main__":  
    import sys  
    app = QtWidgets.QApplication(sys.argv)  
    form = MyForm()  
    form.show()  
    app.exec_()  
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值