从字典选择填充pyqt5输入

2024-09-21 01:19:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我的pyqt5组合框词典有问题。一旦选择了主数据,如何将次要数据段(电子邮件、电话)发送到其他输入端?在

字典:

autocompleteList2 = {
    'James': ['James@Gmail.com', '410-555-5555']
}

model2 = QStringListModel()
model2.setStringList(autocompleteList2)
completer2 = QCompleter()
completer2.setModel(model2)
self.comboBox_4.setCompleter(completer2)
self.comboBox_4.addItems(autocompleteList2)

这只需要“James”这个名字。我希望我的QLineEdit_1填充James@Gmail.com在我在comboBox_4中选择James后,QLineEdit_2填充“410-555-5555”。我该怎么做?:/


Tags: 数据selfcom字典电子邮件gmailpyqt5词典
2条回答

在这种情况下,您不需要QCompleter。请尝试以下示例:

from PyQt5 import QtCore, QtGui, QtWidgets

class Window(QtWidgets.QMainWindow):
    def __init__(self, cList):
        super().__init__()

        self.cList = cList

        self.lineEdit_1 = QtWidgets.QLineEdit()
        self.lineEdit_2 = QtWidgets.QLineEdit()
        layoutH = QtWidgets.QHBoxLayout()
        layoutH.addWidget(self.lineEdit_1)
        layoutH.addWidget(self.lineEdit_2)

#        completer = QtWidgets.QCompleter(self)
#        model     = QtCore.QStringListModel()
#        completer.setModel(model)

        self.comboBox_4 = QtWidgets.QComboBox()
#        self.comboBox_4.setCompleter(completer)
        self.comboBox_4.addItems(sorted(cList.keys())) 
        self.comboBox_4.activated[str].connect(self.onActivatedText)

        layoutV = QtWidgets.QVBoxLayout()
        layoutV.addLayout(layoutH)
        layoutV.addWidget(self.comboBox_4)

        centralWidget = QtWidgets.QWidget()
        centralWidget.setLayout(layoutV)
        self.setCentralWidget(centralWidget)

    @QtCore.pyqtSlot(str)
    def onActivatedText(self, text):
        self.lineEdit_1.setText(self.cList[text][0])
        self.lineEdit_2.setText(self.cList[text][1])


autocompleteList2 = {
    'James-1': ['James111@Gmail.com', '410-111-1111'],
    'James-2': ['James222@Gmail.com', '410-222-2222'],
    'James-3': ['James333@Gmail.com', '410-333-3333'],
}

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

enter image description here


试试这样的方法:

^{pr2}$

您必须通过以下方式将combobox连接到event

your_comboBox.activated.connect(your_function)

然后在函数中更新两个QlineEdits。在

相关问题 更多 >

    热门问题