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"
    
    
  • 相关阅读:
    hdu 1896 stones
    各种类型的取值范围
    RSS/PSS/VSZ
    kasan BUG log
    ARM机器码分析
    Linux进程状态
    谢宝友: 深入理解RCU之七:分级RCU实现
    rcu_preempt detected stalls on CPUs/tasks
    Linux 内核 hlist
    linux cmd
  • 原文地址:https://www.cnblogs.com/qev211/p/15137150.html
Copyright © 2011-2022 走看看