python - PyQt - 带参数的插槽

标签 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 

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

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 将函数作为一等对象,因此可以使用包装函数轻松实现。对于简单的情况,lambda 可以:

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

关于python - PyQt - 带参数的插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646587/

相关文章:

Python OLS 计算

python - 如何从 QNetworkCookieJar 转换为字符串 dict 或 requests.cookie?

python - PyQt 调整 QGraphicsRectItem 大小和重新绘制的问题

python - __slots__ 与泛型类中的类变量冲突

python - 绘制轮廓子图,每个子图都有自己的颜色条

python - numpy - Python - 有选择地导入 .txt 文件的部分内容

python - Pandas 时间戳不一致地循环 30 秒

python - 网格布局: Column width to fit also disabled widgets

c++ - 级联和信号/槽