例子:
我有三个按钮,都差不多。
我想只有一个插槽功能,所有3个按钮。

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

所以我需要一些像带参数的插槽。。
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)能做些什么吗?

最佳答案

connect需要的是任何可调用的Python对象。由于Python具有作为一级对象的函数,这很容易用包装函数实现。对于简单的情况,alambda可以:

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

10-06 03:10