PyQt - 带参数的插槽 [英] PyQt - slots with parameter
本文介绍了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屋!
查看全文