《Old-style Signal and Slot Support》文档的测试程序
#!/usr/bin/env python #coding:utf8 __version__ = "1.0" """ 《Old-style Signal and Slot Support》文档的测试程序 - sofire@gmail.com @2013.02.11 http://pyqt.sourceforge.net/Docs/PyQt4/old_style_signals_slots.html 注意: 1、如果Signal、Slot相关代码写错了,它不会报错,只是不能正确运行。 2、建议学学New Style的写法 """ from PyQt4.QtCore import * from PyQt4.QtGui import * import PyQt4.QtCore as QtCore import PyQt4.QtGui as QtGui from PyQt4.QtCore import QVariant import os, sys, time from signalDialog import * def pyFunction(): print "pyFunction" def pyFunction2(i): print "pyFunction", i class TestDialog(QDialog): def __init__(self, parent=None): super(TestDialog, self).__init__(parent) self.ui = Ui_Dialog() self.ui.setupUi(self) #定义:bool QObject.connect (QObject, SIGNAL(), callable, Qt.ConnectionType = Qt.AutoConnection) #SIGNAL 可以是 Qt Signal,也可以是PyQt Signal # Qt Signal和Slot,是指C++里面静态定义的 #callable 可以是函数,也可以是类的方法 QtCore.QObject.connect(self, QtCore.SIGNAL('QtSig_pyFunc()'), pyFunction) QtCore.QObject.connect(self, QtCore.SIGNAL('QtSig_pyMethod()'), self.pyMethod) QtCore.QObject.connect(self.ui.scrollBar, SIGNAL('valueChanged(int)'), pyFunction2) #定义:bool QObject.connect (QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType = Qt.AutoConnection) QtCore.QObject.connect(self.ui.scrollBar, SIGNAL('valueChanged(int)'), self.ui.label, SLOT('setNum(int)')) #也可以这样写 #定义:bool connect (self, QObject, SIGNAL(), SLOT(), Qt.ConnectionType = Qt.AutoConnection) #self.ui.label.connect(self.ui.scrollBar, QtCore.SIGNAL('valueChanged(int)'), SLOT('setNum(int)')) #PySig和QtSlot/PySlot的关联 QtCore.QObject.connect(self, SIGNAL('PySig_qtSlot(int)'), self.ui.label, SLOT('setNum(int)')) QtCore.QObject.connect(self, QtCore.SIGNAL('PySig_pySlot()'), self, QtCore.SLOT('pySlot()')) #用PyQt_PyObject -- 它表示参数可以是任意的Python类型 QtCore.QObject.connect(self, QtCore.SIGNAL('PySig_PyObject(PyQt_PyObject)'), pyFunction2) #Short-circuit Signals #它没有参数和括号,但是可以传递任何数量和类型的参数给Slot(传递的参数不足会给警告,多余的会丢弃) #它隐形定义了各个参数为 PyQt_PyObject #注意只能关联到Python的Slots,不能是Qt Slots QtCore.QObject.connect(self, QtCore.SIGNAL('PySig2'), pyFunction2) #SIGNAL可以和SIGNAL关联 QtCore.QObject.connect(self, QtCore.SIGNAL('PySig2Sig'), self, QtCore.SIGNAL('PySig2')) #一个Sig可以和多个SLots关联 #一个Slots可以和多个Sig关联 #可以在线程之间关联 self.runTest() #注意必须用修饰器 #@QtCore.pyqtSignature() #已废弃,改用pyqtSlot @pyqtSlot() def pySlot(self): print "pySlot" def runTest(self): self.emit(QtCore.SIGNAL('QtSig_pyFunc()')) self.emit(QtCore.SIGNAL('QtSig_pyMethod()')) self.emit(QtCore.SIGNAL('PySig_qtSlot(int)'), 2) self.emit(QtCore.SIGNAL('PySig_pySlot()')) self.emit(QtCore.SIGNAL('PySig_PyObject(PyQt_PyObject)'), ('abc', 'def')) self.emit(QtCore.SIGNAL('PySig_PyObject(PyQt_PyObject)'), {'a':1, 'b':2}) self.emit(QtCore.SIGNAL('PySig2'), 1) self.emit(QtCore.SIGNAL('PySig2'), (3, 4)) self.emit(QtCore.SIGNAL('PySig2Sig'), 5) def pyMethod(self): print "pyMethod" if __name__ == '__main__': app = QtGui.QApplication(sys.argv) form = TestDialog() form.show() app.exec_()
signalDialog.py:
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'signalDialog.ui' # # Created: Mon Feb 11 17:34:34 2013 # by: PyQt4 UI code generator 4.9.6 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName(_fromUtf8("Dialog")) Dialog.resize(400, 300) self.buttonBox = QtGui.QDialogButtonBox(Dialog) self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) self.buttonBox.setObjectName(_fromUtf8("buttonBox")) self.scrollBar = QtGui.QScrollBar(Dialog) self.scrollBar.setGeometry(QtCore.QRect(20, 20, 160, 16)) self.scrollBar.setOrientation(QtCore.Qt.Horizontal) self.scrollBar.setObjectName(_fromUtf8("scrollBar")) self.label = QtGui.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(20, 50, 161, 61)) font = QtGui.QFont() font.setPointSize(22) self.label.setFont(font) self.label.setObjectName(_fromUtf8("label")) self.retranslateUi(Dialog) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), Dialog.accept) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): Dialog.setWindowTitle(_translate("Dialog", "Dialog", None)) self.label.setText(_translate("Dialog", "0", None))
相关推荐
maven-core-it-support-old-location-1.1.jar
easy-rsa-old-master.zip . ├── configure.ac ├── COPYING ├── COPYRIGHT.GPL ├── distro │ ├── Makefile.am │ └── rpm │ ├── easy-rsa.spec.in │ └── Makefile.am ├── doc │ ...
KM-OLD-IOS.mobileconfig
1627893376962546_KM-OLD-IOS.mobileconfig
为了规范这类行为,提高信息传播的有效性和安全性,“Old-Driver-Protocol”应运而生,这是一种专为社交网络中老司机开车行为定制的协议标准。 “Old-Driver-Protocol”开源项目旨在为社交网络提供一套标准化的操作...
解压后,我们发现了一个名为"old-release.exe"的可执行文件,这通常代表一个Windows操作系统下的应用程序。 "old-release.exe"在文本编辑领域可能是一个早期的文本编辑器程序。老版本的文本编辑器往往以简洁、高效...
使用说明文档:https://blog.csdn.net/wanghaisheng/article/details/107314417 开源服务器众多,功能强大, 但却没有可以直接拿来使用的. 原因是配置安装困难,... 详见文档. 欢迎下载使用, 功能完全没限制, 完全免费.
【标题】"IOS应用源码——radex-Yaspeg-old-4966037.rar" 提供的是一款基于iOS平台的应用程序源代码。这个项目可能是开发者在某个特定版本(旧版)下开发的“radex”应用的Yaspeg模块。"radex"可能是一个自定义的...
"old-major"可能是一个自定义的库,提供特定的服务或工具,但具体的库功能需查看其文档或源代码才能得知。版本号"0.0.8"表示这是该库的第八次更新,通常版本号的升级伴随着修复错误、添加新功能或性能优化。 ".tar....
描述中的"old-project.7z"进一步强调了这是一个过去的项目,可能包含源代码、文档、资源或其他与项目相关的文件。通常,这样的存档对于回顾历史、复用代码或者作为备份都是很有价值的。 标签 "java" 提示我们这个...
这个压缩包包含一个名为“script56-old-cn.chm”的文件,它实际上是一个帮助文件(Microsoft HTML Help Workshop格式),通常用于存储电子书籍或者技术文档。在这个文档中,读者可以找到丰富的JavaScript语言知识,...
Bringing-Old-Photos-Back-to-Life(打包)
标题“Bringing-Old-Photos-Back-to-Life(打包版)”揭示了这是一个关于恢复或增强旧照片质量的项目,可能包含一系列工具、教程或软件。这个项目与微软(Microsoft)有关,根据标签“microsoft”,我们可以推断这...
AS-23-Chen-New-Wine-in-an-Old-Bottle-Attacking-Chrome-WebSQL
"Atom-an-old-hope-syntax-atom.zip" 是一个专门为Atom编辑器设计的主题包,其灵感来源于遥远的星系,暗示着这个主题可能带有科幻或者宇宙元素,旨在为用户创造一种独特的编程体验。"Old Hope"可能是一个致敬《星球...
《pengrui2009-RTL8188EUS_OLD-master.zip:Linux系统下的RTL8188EUS驱动程序详解》 在Linux操作系统中,无线网卡的驱动程序是连接硬件设备与操作系统之间的桥梁,对于网络功能的正常运行至关重要。"pengrui2009-...
《iOS游戏应用源代码解析——radex-Yaspeg-old-4966037》 在iOS开发领域,源代码是理解应用运行机制、学习技术实现和进行二次开发的关键。"radex-Yaspeg-old-4966037.zip"是一个专门针对iOS游戏的源代码包,其内容...
旧照片还原(官方PyTorch实施)| | | | :fire: 使旧照片重现生命,CVPR2020(口服) 通过深潜...要求该代码已在装有Nvidia GPU和CUDA的Ubuntu上进行了测试。 需要Python> = 3.6才能运行代码。安装克隆用于以下内容的S