В PyQt, как можно использовать сигналы и слоты для подключения выпадающего списка к функции? - PullRequest
4 голосов
/ 01 февраля 2010

В PyQt есть концепция сигналов и слотов для соединения объектов с функциями друг друга, но я не могу найти их ссылающимися на функции, не связанные с другими объектами. Например, я хочу, чтобы в раскрывающемся списке был запущен алгоритм A или алгоритм B.

Как PyQt выполняет эту функцию?

1 Ответ

3 голосов
/ 01 февраля 2010

Хотите ли вы, чтобы эффект раскрывающегося списка вызывал функцию?

Подключите соответствующий сигнал выпадающего списка к вашей функции.

Например, с сигналом 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...