编程语言
首页 > 编程语言> > python-PyQt4,从comboBox获取当前文本

python-PyQt4,从comboBox获取当前文本

作者:互联网

我有一个带有comboBox的非常简单的GUI,其中包含4个项目.
这四个项目中的每一个都做不同的事情,需要在启用/禁用QLineEdit框以及能够基于当前选择添加占位符文本方面链接到QLineEdit框.

码:

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self.comboBox = QtGui.QComboBox(self.centralwidget)
        self.comboBox.setGeometry(QtCore.QRect(10, 10, 201, 26))
        self.comboBox.setObjectName(_fromUtf8("comboBox"))
        self.comboBox.addItem(_fromUtf8(""))
        self.comboBox.addItem(_fromUtf8(""))
        self.comboBox.addItem(_fromUtf8(""))
        self.comboBox.addItem(_fromUtf8(""))

        if self.comboBox.currentText() == 'Item1':
            self.lineEdit_5.setDisabled(True)
            self.lineEdit_4.setText('0')  

    def retranslateUi(self, MainWindow):
        self.comboBox.setItemText(0, _translate("MainWindow", "Item1", None))
        self.comboBox.setItemText(1, _translate("MainWindow", "Item2", None))
        self.comboBox.setItemText(2, _translate("MainWindow", "Item3", None))
        self.comboBox.setItemText(3, _translate("MainWindow", "Item4", None))

当然self.lineEdits是QLineEdit,即self.lineEdit_5 = QtGui.QLineEdit()

我在这里做错了什么?

PS:这与完整的代码相去甚远,它已大大简化,因此易于阅读,如果您需要更多信息,请告诉我

解决方法:

您需要使用signal and slots.

每当在组合框中选择一个新项目时,都会发出信号currentIndexChanged(const QString& text)(文本是所选新项目的文本).您可以将一个方法连接到该信号,并通过行编辑执行所需的任何操作.

    self.comboBox.currentIndexChanged[str].connect(self.onChange)

def onChange(self, newText):
    if newText=="Item 1":
        #do this
    else:
        #do that

标签:combobox,pyqt4,python
来源: https://codeday.me/bug/20191119/2035171.html