使用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_())
答案 0 :(得分:1)
QComboBox
有一个信号currentIndexChanged
。当用户在组合框中选择新选项时,它会被发出。新索引与信号一起传递。
如果新索引为2(也就是选项3),您可以将此信号连接到将禁用第二个组合框的函数
self.comboBox1.currentIndexChanged.connect(self.on_change)
def on_change(self, newIndex):
if newIndex==2:
self.comboBox2.setEnabled(False)