zoukankan      html  css  js  c++  java
  • 信号与槽

    1、系统自带的信号

    # 系统自带的信号
    self.btn = QPushButton('我的按钮',self)
    self.btn.clicked.connect(self.on_click)
    def on_click(self):
      print("haha")
    

    2、自定义信号
    信号参数、槽参数、emit发送时的参数 类型应该是一致的。

    # 自定义信号
    class MySignal(Qobject):
      # 定义一个信号
      sendmsg = pyqtSignal(object)
      # 定义3个参数的信号 step1
      sendmsg_3 = pyqtSignal(str, int, int)
    
      def run(self):
        self.sendmsg.emit('Hello')
      def run_3(self):
        self.sendmsg_3.emit('Hello',3,4)  # step3
    
    class MySlot(Qobject):
      def get(self,msg):
        print('收到')
      def get_3(self, msg, a,b):
        print('收到3')
    
    if __name__ == '__main__':
        send = MySignal()
        slot = MySlot()
    
        send.sendmsg.connect(slot.get)  
        send.sendmsg_3.connect(slot.get_3)  # step2
    
        send.run()
        send.run_3()
    

    以下两个可以实现传参数,这个在qt自带的信号中用处大,自定义的话已经传参数了,就不需要再多此一举了。
    3、lambda表达式

    # lambda表达式为槽函数传递参数
    btn1 = QPushButton("按键1")
    btn1.clicked.connect(lambda:self.on_click(12,21))
    self.on_click(self,m,n):
        print("haha")
    

    4、partial函数

    # 使用partial对象为槽函数传递参数
    btn1 = QPushButton("按键1")
    btn1.clicked.connect(partial(self.on_click,12,21))
    self.on_click(self,m,n):
        print("haha"
    
    
  • 相关阅读:
    leetcode401 二进制手表问题
    HashMap与Hashtable
    ideal配置web项目
    java多线程
    spring boot项目启动报错:Failed to load property source from location 'classpath:/application.yml'
    spring cloud实例Dome详细搭建(一)
    ideal激活方法
    Go学习第三章面向对象
    Go学习第二章内建容器
    Go学习第一章基础语法
  • 原文地址:https://www.cnblogs.com/qev211/p/15137150.html
Copyright © 2011-2022 走看看