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

3 投票
1 回答
1562 浏览
提问于 2025-04-15 18:42

在PyQt中,有一个叫做信号和槽的概念,用来连接不同对象之间的功能。不过,我发现很难找到与其他对象无关的函数的相关信息。举个例子,我想让一个下拉列表可以选择运行算法A或者算法B。

那么,PyQt是怎么实现这个功能的呢?

1 个回答

3

你想要让下拉列表的变化能调用一个函数吗?

你需要把下拉列表的相应信号连接到你的函数上。

比如说,使用 QComboBox 的 currentIndexChanged() 信号。把这个信号连接到一个“包装”函数,这个函数会根据选择的索引来决定调用哪个具体的函数。

补充:这个包装函数可以非常简单,像这样:

functions = {0: reference_to_function_1, 1: reference_to_function_2}

def wrapper(index):
    functions[index]()

补充2:如果你想了解一些连接信号和槽的其他方法:

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

撰写回答