PySide:将QComboBox索引与字符串连接

时间:2014-10-25 15:26:42

标签: python pyqt pyside signals-slots qcombobox

我想将QComboBox indeces与特定字符串连接(即当我选择“A”时,我希望它打印“A已被选中”,当我选择“B”时,则“B已被选中” )。

我是PySide的新手并且正在学习,所以我确信存在一个简单的解决方案。感谢帮助。

from PySide import QtGui


class Widget(QtGui.QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)

        v_global_layout = QtGui.QVBoxLayout()

        method_selection = QtGui.QComboBox()
        method_selection.addItem("A")
        method_selection.addItem("B")

        v_global_layout.addWidget(method_selection)
        self.setLayout(v_global_layout)

        def do_somethinh():
            print("A has been selected!!!")
        method_selection.activated.connect(do_somethinh)


if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)

    main_window = Widget()
    main_window.setGeometry(100, 100, 640, 480)
    main_window.show()

    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:1)

QComboBox.activated信号有两个重载:一个发送所选项目的索引,另一个发送文本。默认重载发送索引。要选择其他重载,您需要稍微不同的语法:

    def do_somethinh(text):
        print(text, "has been selected!!!")
    method_selection.activated[str].connect(do_somethinh)

因此信号对象具有__getitem__支持,这允许您通过将参数类型作为键传递来选择信号的特定重载(如果有多个参数,则可以传递类型的元组)。 / p>