繁体   English   中英

当我们从另一个组合框中选择一个元素时,禁用组合框

[英]Disable a Combobox in when we select an element from another combobox

使用PyQt4,当我们从另一个组合框中选择选项3时,我想隐藏/禁用组合框。

我知道我们可以使用QComboBox.setEnabled(False)来隐藏/禁用组合框,但是我不知道如何在我的代码中实现它。

我尝试使用信号槽编辑器在QT Designer中执行此操作,但是当我们选择任何特定元素时,没有选择从组合框发送信号的选项。

这是GUI代码:

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_test_gui(object):
    def setupUi(self, test_gui):
        test_gui.setObjectName(_fromUtf8("test_gui"))
        test_gui.resize(400, 300)
        self.primarybox = QtGui.QComboBox(test_gui)
        self.primarybox.setGeometry(QtCore.QRect(30, 70, 69, 22))
        self.primarybox.setObjectName(_fromUtf8("primarybox"))
        self.primarybox.addItem(_fromUtf8(""))
        self.primarybox.addItem(_fromUtf8(""))
        self.primarybox.addItem(_fromUtf8(""))
        self.primarybox.addItem(_fromUtf8(""))
        self.primarybox.addItem(_fromUtf8(""))
        self.secondarybox = QtGui.QComboBox(test_gui)
        self.secondarybox.setGeometry(QtCore.QRect(210, 70, 69, 22))
        self.secondarybox.setObjectName(_fromUtf8("secondarybox"))
        self.secondarybox.addItem(_fromUtf8(""))
        self.secondarybox.addItem(_fromUtf8(""))
        self.secondarybox.addItem(_fromUtf8(""))
        self.secondarybox.addItem(_fromUtf8(""))

        self.retranslateUi(test_gui)
        QtCore.QMetaObject.connectSlotsByName(test_gui)

    def retranslateUi(self, test_gui):
        test_gui.setWindowTitle(_translate("test_gui", "Dialog", None))
        self.primarybox.setItemText(0, _translate("test_gui", "Comb1", None))
        self.primarybox.setItemText(1, _translate("test_gui", "option1", None))
        self.primarybox.setItemText(2, _translate("test_gui", "option2", None))
        self.primarybox.setItemText(3, _translate("test_gui", "option3", None))
        self.primarybox.setItemText(4, _translate("test_gui", "option4", None))
        self.secondarybox.setItemText(0, _translate("test_gui", "comb2", None))
        self.secondarybox.setItemText(1, _translate("test_gui", "element1", None))
        self.secondarybox.setItemText(2, _translate("test_gui", "element2", None))
        self.secondarybox.setItemText(3, _translate("test_gui", "element3", None))


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    test_gui = QtGui.QDialog()
    ui = Ui_test_gui()
    ui.setupUi(test_gui)
    test_gui.show()
    sys.exit(app.exec_())

QComboBox的信号为currentIndexChanged 当用户在组合框中选择新选项时,将发出此消息。 新索引随信号一起传递。 您可以将此信号连接到一个函数,该函数将在新索引为2时禁用第二个组合框(也称为选项3)

self.comboBox1.currentIndexChanged.connect(self.on_change)

def on_change(self, newIndex):
    if newIndex==2:
        self.comboBox2.setEnabled(False)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM