【问题标题】:PySide/PyQT signals and slots with tuples?PySide/PyQT 信号和带有元组的槽?
【发布时间】:2013-10-22 08:26:46
【问题描述】:

讨论信号和槽的PySide docs 给出了strint 类型的信号示例。如果您希望信号是元组中的一对整数,您会怎么做?

【问题讨论】:

    标签: qt pyqt pyside signals-slots


    【解决方案1】:

    您应该能够使用object 来传递一个元组。

    例如:

    signal = Signal(object)
    signal.connect(...)
    signal.emit(tuple)
    

    【讨论】:

    • 类型参数到底是做什么的?
    • @JasonS 我不太确定,因为我不太熟悉 PySide 或 QT 的内部结构,但这似乎深入了解了信号和插槽的工作原理:woboq.com/blog/how-qt-signals-slots-work.html
    • 我对PySide不熟悉,只会PyQt,不过你应该也可以用Signal(tuple)。在不了解细节的情况下:对此的需求来自 PySide 和 PyQt 包装底层 C++ 信号这一事实。 type 参数还允许实现一个具有多个签名的信号,例如qt-project.org/doc/qt-4.8/qcombobox.html#activated
    • @sebastian 对于任何想知道的人来说,这都失败了TypeError: C++ type 'tuple' is not supported as a slot argument type。似乎唯一的解决方案(至少在 PyQt 中)是使用QtCore.SIGNAL("signal_name(PyQt_PyObject)")
    • @ThibaudRuelle 我无法重现此错误消息。我可以在 PyQt 4.11.3 上定义和使用 pyqtSignal(tuple)pyqtSlot(tuple) 就好了。
    猜你喜欢
    • 2012-06-08
    • 2011-10-21
    • 2011-11-23
    • 2011-08-08
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多