在PyQt中,如何使用信号和插槽将下拉列表连接到函数?

时间:2010-01-31 21:37:07

标签: python user-interface pyqt

在PyQt中,有一个信号和槽的概念将对象连接到彼此的函数,但我似乎无法找到它们引用与其他对象无关的函数。例如,我想要一个下拉列表来运行算法A或算法B.

PyQt如何实现此功能?

1 个答案:

答案 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