pyqt自定义控件,

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: