PyQt - 带参数的插槽

Mel*_*oun 2 python pyqt slots

例:

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

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 
Run Code Online (Sandbox Code Playgroud)

所以我需要像参数插槽一样的东西..

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))
Run Code Online (Sandbox Code Playgroud)

Python(pyQt)可以做些什么吗?

Eli*_*sky 5

什么connect需要是任何可调用的 Python对象.由于Python具有作为第一类对象的功能,因此使用包装函数很容易实现.对于简单的情况,a lambda会做:

    self.connect(pyuic4Button, SIGNAL("clicked()"),
            lambda: self.setPath("pyuic4"))
    self.connect(pyrcc4Button, SIGNAL("clicked()"),
            lambda: self.setPath("pyrcc4"))
Run Code Online (Sandbox Code Playgroud)