在PyQt中,有一个信号和槽的概念,用于连接对象到彼此的函数,但我似乎找不到与其他对象没有关联的函数的引用。例如,我想让下拉列表运行算法A或算法B。
PyQt如何实现这个功能呢?
PyQt如何实现这个功能呢?
你想要改变下拉列表以调用函数的效果吗?
将下拉列表的适当信号连接到你的函数。
例如,使用 QComboBox 的 currentIndexChanged() 信号。将其连接到一个“包装器”函数,该函数根据索引决定调用哪个函数。
编辑:包装器可以非常简单,像这样:
functions = {0: reference_to_function_1, 1: reference_to_function_2}
def wrapper(index):
functions[index]()
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