PyQt - 带参数的插槽 [英] PyQt - slots with parameter

查看:32
本文介绍了PyQt - 带参数的插槽的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

示例:

我有三个按钮,几乎都一样.我希望所有 3 个按钮只有 1 个插槽功能.

I have three pushbuttons, all makes almost the same. I want to have only 1 slot-function for all 3 buttons.

def slotButtons(nr_button):

  #common part

  if(nr==1):
    #for button 1
  else if(nr==2):
    #for button 2
  else if(nr==3):
    #for button 3

  #common part 

所以我需要带参数的插槽之类的东西..

So I need something like slots with parameter..

QtCore.QObject.connect(pushButton1, QtCore.SIGNAL("clicked()"), slotButtons(1))
QtCore.QObject.connect(pushButton2, QtCore.SIGNAL("clicked()"), slotButtons(2))
QtCore.QObject.connect(pushButton3, QtCore.SIGNAL("clicked()"), slotButtons(3))

Python(pyQt) 能做些什么吗?

Can Python(pyQt) do something that?

推荐答案

connect 需要的是任何可调用 Python 对象.由于 Python 将函数作为第一类对象,因此使用包装函数很容易实现.对于简单的情况,lambda 可以:

What connect needs is any callable Python object. Since Python has functions as first-class objects, this is easy to implement with a wrapper function. For simple cases, a lambda would do:

    self.connect(pyuic4Button, SIGNAL("clicked()"),
            lambda: self.setPath("pyuic4"))
    self.connect(pyrcc4Button, SIGNAL("clicked()"),
            lambda: self.setPath("pyrcc4"))

这篇关于PyQt - 带参数的插槽的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆