python - 使用新样式的信号和插槽组合框?

标签 python pyqt pyqt5 qcombobox qt-signals

我有两条线使用旧的 SIGNAL 和 SLOT 样式..

combobox.emit(SIGNAL("activated(int)"), combobox.currentIndex())
combobox.emit(SIGNAL("activated(const QString &)"), combobox.currentText())

我想知道新风格会是什么样子。我是 python 新手,对信号和槽没有太多经验。是否有一个真正好的资源涵盖了这个问题?该文档并没有真正帮助我理解发生了什么。

最佳答案

解决方案是指示正在发出的信号的参数类型:

combo.activated[type].connect(someSlot)

示例:

class Widget(QWidget):
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.setLayout(QVBoxLayout())
        combo = QComboBox(self)
        self.layout().addWidget(combo)
        combo.addItems(["item1", "item2", "item3"])
        combo.activated[int].connect(self.onActivatedIndex)
        combo.activated[str].connect(self.onActivatedText)

    @pyqtSlot(int)
    def onActivatedIndex(self, index):
        print(index)

    @pyqtSlot(str)
    def onActivatedText(self, text):
        print(text)


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

关于python - 使用新样式的信号和插槽组合框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46855815/

相关文章:

python - 从 python 中杀死一个子进程,包括它的子进程

python - 在QWebEngineView浏览器中保存html文件

python - 在 QCompleter 激活调用时查找 QStandardItemModel 的索引

java - "ValueError: Incompatible Language version 13. Must not be between 9 and 12"与 Google Colab

python - Try/Catch - 是否有可能获取异常发生前生成的所有数据?

python - 使用 pycharm 在 vagrant 实例中使用 python3 作为 docker 容器调试 django 应用程序

python - 相当于time.sleep?

python - QWebView 布局不正确

Python - PyQT4如何检测窗口中任意位置的鼠标点击位置?

python - 专注于多个小部件