Pyside2 сигнальные слоты 2d определение сигнатуры массива, эквивалент для списка списка - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь подключить signal, который генерирует 2D-массив, к slot, который обрабатывает этот список списка.

Я использую @Slot(list) в моем slot определении и SIGNAL("slot_method(QList<QList<QString>>)") но это, похоже, не работает.

Я хотел бы знать, как правильно преобразовать список списков в Qt терминах.

1 Ответ

0 голосов
/ 03 октября 2018

В Python нет 2D списков, есть только списки, поэтому вы должны использовать подпись list.

Пример:

from PySide2 import QtCore


class Sender(QtCore.QObject):
    signal = QtCore.Signal(list)

    def on_test(self):
        l = [["a", "b", "c", "d"], ["A", "B", "C", "D"]]
        self.signal.emit(l)


class Receiver(QtCore.QObject):
    @QtCore.Slot(list)
    def on_receiver(self, l):
        print(l)
        QtCore.QCoreApplication.quit()


if __name__ == '__main__':
    import sys
    app = QtCore.QCoreApplication(sys.argv)

    sender = Sender()
    receiver = Receiver()
    sender.signal.connect(receiver.on_receiver)
    QtCore.QTimer.singleShot(1000, sender.on_test)

    sys.exit(app.exec_())
...