pyqtsignal的基本使用
下面包含了对pyqtsignal的基础使用,包括多参数
因为较为简单,就当作参考书吧~~
然后信号可以接收多个信号源哦~下面也有举例 (mousepressevent 和 buttonclicked2)
import sys from pyqt5.qtwidgets import qwidget, qpushbutton, qapplication, qmainwindow, qhboxlayout from pyqt5.qtcore import qt, pyqtsignal class cmainwindow(qmainwindow): signaltest = pyqtsignal() signaltest1 = pyqtsignal(str) signaltest2 = pyqtsignal(float, float) def __init__(self): super().__init__() # 确认pushbutton设置 btn = qpushbutton("无参信号") btn.clicked.connect(self.buttonclicked) btn1 = qpushbutton("单参信号") btn1.clicked.connect(self.buttonclicked1) btn2 = qpushbutton('双参信号') btn2.clicked.connect(self.buttonclicked2) hbox = qhboxlayout() hbox.addstretch(1) hbox.addwidget(btn) hbox.addwidget(btn1) hbox.addwidget(btn2) widget = qwidget() self.setcentralwidget(widget) widget.setlayout(hbox) self.signaltest.connect(self.signalnone) self.signaltest1.connect(self.signalone) self.signaltest2.connect(self.signaltwo) self.setwindowtitle('pysignal的使用') self.show() def signalnone(self): print("无参信号,传来的信息") def signalone(self, arg1): print("单参信号,传来的信息:", arg1) def signaltwo(self, arg1, arg2): print("双参信号,传来的信息:", arg1, arg2) def mousepressevent(self, event): self.signaltest2.emit(event.pos().x(), event.pos().y()) def buttonclicked(self): self.signaltest.emit() def buttonclicked1(self): self.signaltest1.emit("我是单参信号传来的") def buttonclicked2(self): self.signaltest2.emit(0, 0) def keypressevent(self, e): if e.key() == qt.key_escape: self.close() if __name__ == '__main__': app = qapplication(sys.argv) mainwindow = cmainwindow() sys.exit(app.exec_())
关于pyqtsignal()作用
from pyqt5.qtcore import qobject , pyqtsignal class custsignal(qobject): #声明无参数的信号 signal1 = pyqtsignal() #声明带一个int类型参数的信号 signal2 = pyqtsignal(int) #声明带int和str类型参数的信号 signal3 = pyqtsignal(int,str) #声明带一个列表类型参数的信号 signal4 = pyqtsignal(list) #声明带一个字典类型参数的信号 signal5 = pyqtsignal(dict) #声明一个多重载版本的信号,包括带int和str类型参数的信号和带str类型参数的信号 signal6 = pyqtsignal([int,str], [str]) def __init__(self,parent=none): super(custsignal,self).__init__(parent) #将信号连接到指定槽函数 self.signal1.connect(self.signalcall1) self.signal2.connect(self.signalcall2) self.signal3.connect(self.signalcall3) self.signal4.connect(self.signalcall4) self.signal5.connect(self.signalcall5) self.signal6[int,str].connect(self.signalcall6) self.signal6[str].connect(self.signalcall6overload) #发射信号 self.signal1.emit() self.signal2.emit(1) self.signal3.emit(1,"text") self.signal4.emit([1,2,3,4]) self.signal5.emit({"name":"tao","age":"25"}) self.signal6[int,str].emit(1,"text") self.signal6[str].emit("text") def signalcall1(self): print("signal1 emit") def signalcall2(self,val): print("signal2 emit,value:",val) def signalcall3(self,val,text): print("signal3 emit,value:",val,text) def signalcall4(self,val): print("signal4 emit,value:",val) def signalcall5(self,val): print("signal5 emit,value:",val) def signalcall6(self,val,text): print("signal6 emit,value:",val,text) def signalcall6overload(self,val): print("signal6 overload emit,value:",val) if __name__ == '__main__': custsignal = custsignal() 运行结果:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。
需要了解更多c/c++开发分享关于pyqtSignal的基本使用,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/1237750.html