在PyQt中,有一个信号和槽的概念将对象连接到彼此的函数,但我似乎无法找到它们引用与其他对象无关的函数。例如,我想要一个下拉列表来运行算法A或算法B.
PyQt如何实现此功能?
答案 0 :(得分:3)
您是否希望更改下拉列表以调用函数?
将下拉列表的相应信号连接到您的功能。
例如使用QComboBox currentIndexChanged()信号。将其连接到“包装器”函数,该函数决定(基于索引)要调用的函数。
编辑:包装器可以非常简单,如下所示:
functions = {0: reference_to_function_1, 1: reference_to_function_2}
def wrapper(index):
functions[index]()
Edit2:如果你想要一些替代插槽的替代方法:
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html#connecting-signals-and-slots
当他们谈论Py或Qt信号时,以及当他们谈论Python函数或方法时。例如,这些是将Qt信号连接到Python函数和Python方法的语法:
QtCore.QObject.connect(a, QtCore.SIGNAL("QtSig()"), pyFunction) #function-style
QtCore.QObject.connect(a, QtCore.SIGNAL("QtSig()"), pyClass.pyMethod) #method-style