PyQt5 QComboBox currentIndexChanged(QString)问题

时间:2019-09-29 15:51:17

标签: python pyqt pyqt5 qcombobox

currentIndexChanged信号有两个重载,一个重载传递包含当前索引的int,另一个重载包含与当前索引关联的文本的QString。

我想使用后者,但是如果我这样做,代码会崩溃,而如果使用前者,代码会工作。我在做什么错了?

from PyQt5 import QtCore, QtWidgets
import sys


class MyWindow(QtWidgets.QWidget):
    def __init__(self, *args):
        super().__init__(*args)

        box = QtWidgets.QComboBox()
        box.addItems(['First', 'Second', 'Third'])

        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(box)
        self.setLayout(layout)

        box.currentIndexChanged.connect(self.my_handler)

    #@QtCore.pyqtSlot(int)
    @QtCore.pyqtSlot('QString')
    def my_handler(self, text):
        print(text)


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

P.S。

很奇怪,在我的代码的扩展版本中,我可以成功连接QString重载的插槽。执行时不会崩溃。不过它确实接收到一个整数,因此它忽略了我的“ Qstring”规范。

0 个答案:

没有答案