比如说我要初始化一个字典
phonebook={'Alice':'3241','Beth':'9274','Ceil':'3258'}
这样这本字典就有三对项,分别有键(key)和对应的值(value)组成
比如这里Alice,Beth,Ceil都是key
对应的value则分别为3241,9274,3258
key和value之间用冒号(:)隔开,项之间用逗号(,)隔开,整个字典由一对大括号括起来。
比如你要查询beth的电话号码,就可以用这条语句:
print phonebook['Beth']
结果则为9274
现在对字典的基本概念熟悉了吧?!
然后回答下你这个问题。
你要把列表中的元素添加到字典中,那么必须提供key值或value来和d中的{'a','b','c'}对应。
一楼就是其中一个解法,不过有些瑕疵,正确的应该是:
a=dict(zip(d, ['']*3))
a的值即为{'a':'', 'b':'', 'c':''}
此时列表中的元素a,b,c作为key,value的值我们暂定为空
c++下面是将数据读取出来,然后添加到qlistview中,这样可以列表型显示。然后把这个列表绘制到qlineedit下面。在这种情况下,您不需要QCompleter。请尝试以下示例:
from PyQt5 import QtCore, QtGui, QtWidgetsclass 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_())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)