pyqt自定义控件,
#编码=utf8
您可以通过QObject.emit()为组件创建自己的信号。
如果信号没有参数(没有括号,如atzero),则为短路信号。
当传输短路信号时,可以将任意数字作为详细参数传递给emit()方法,
它们作为Python对象传递。
这避免了将参数转换为C类型的开销,也意味着可以传递任何Python对象,
该对象不能转换为C数据类型。
具有至少一个参数的信号是Qt信号或非短Python信号。
在这些情况下,PyQt将检查信号是否是Qt信号,如果不是,它将被视为Python信号。
无论是Qt信号还是非短路Python信号,参数都会转换成C数据类型。
导入系统
来自PyQt4。QtCore导入*
来自PyQt4。QtGui导入*
#创建一个QSpinBox类
类ZeroSpinBox(QSpinBox):
#定义一个静态全局变量来记录它为零的次数
零=0
def __init__(self,parent=None):
#调用QSpinBox进行初始化
超级(ZeroSpinBox,self)。__init__(父级)
#并且当呼叫连接函数值改变时
#在零点发出信号并返回一个数字。
self.connect(self,SIGNAL(valueChanged(int)),self.checkzero)
def checkzero(自身):
#当值为0时
if self.value()==0:
#变量加一
self.zeros=1
#调用emit函数创建一个信号并返回一个数字
#这里的信号atzero没有括号告诉PyQt是短路信号。
self.emit(信号( atzero ),self.zeros)
课堂形式(QDialog):
def __init__(self,parent=None):
超级(形态,自我)。__init__(父级)
#创建ZeroSpinBox对象的实例
zerospin=ZeroSpinBox()
#创建具有水平布局的对象实例
hb=QHBoxLayout()
#将ZeroSpinBox对象实例添加到水平布局实例中
hb.addWidget(zerospin)
#将水平布局实例添加到表单中
self.setLayout(hb)
#将ZeroSpinBox与表单连接
#零点信号激活时呼叫通知。
#信号excitation是返回值,它被传递给announce函数
self.connect(zerospin,SIGNAL(atzero ),self.announce)
#创建一个只有一个参数的函数
定义公告(自身,零):
#打印零显示的次数
print ZeroSpinBox已经是零%d倍 % 0
app=QA application(sys . argv)
form=Form()
form.show()
app.exec_()运行结果截图:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。