转载

pyqt5信号与槽

pyqt5信号与槽(父控件与子控件通信)

  • 在子控件定义信号

    记住信号的定义必须是类属性 即在方法外定义

    getScoreSignal = pyqtSignal(int)
  • 触发信号的操作

    
    #记住必须传递int类型的参数score
    
    self.getScoreSignal.emit(score)
  • 在父控件中与槽连接

    
    #canvas是子控件
    
    self.canvas.getScoreSignal.connect(self.getScoreAction)

    槽函数

    
    #这个score就是信号的int类型参数
    
    def getScoreAction(self, score):
    
          QApplication.beep()
    
          value = self.scoreNumber.intValue()
    
          newValue = value + score
    
          self.scoreNumber.display(newValue)
    
          #更新speed
          if value / levelStep != newValue / levelStep:
              self.levelNumber.display(newValue / levelStep)
              self.canvas.speed *= percent
  • 至此,只要子控件发出getScoreSignal信号,父控件就会调用其槽函数getScoreAction

正文到此结束
本文目录