如何使用 CSV 文件中的元素填充 QComboBox
How to fill a QComboBox with elements from a CSV file
我在 QTDesigner QDialog 表单上有一个组合框,我想用 CSV 文件中一列的内容填充它。我调用了组合框的调用并构建了从 CSV 中提取值的函数,但组合框不会更新信息。
self.optStates.currentIndexChanged.connect(self.selectState)
def selectState(self):
with open('States.csv') as csvDataFile:
csvReader = csv.DictReader(csvDataFile, delimiter=',')
states = []
states.extend([row['state'] for row in csvReader if row['state']])
其他代码已被省略,但对话框的其余部分工作正常。
currentIndexChanged
是一个信号,当您选择 QComboBox
的选项时触发,并且由于您的 QComboBox
中没有项目,它永远不会触发,除了没有在这种情况下需要使用它。您必须做的是使用 addItems()
方法
将其填充到构造函数中
def __init__(self, another_arguments):
#
# some code
#
with open('States.csv') as csvDataFile:
csvReader = csv.DictReader(csvDataFile, delimiter=',')
states = [row['state'] for row in csvReader if row['state']]
self.optStates.addItems(states)
我在 QTDesigner QDialog 表单上有一个组合框,我想用 CSV 文件中一列的内容填充它。我调用了组合框的调用并构建了从 CSV 中提取值的函数,但组合框不会更新信息。
self.optStates.currentIndexChanged.connect(self.selectState)
def selectState(self):
with open('States.csv') as csvDataFile:
csvReader = csv.DictReader(csvDataFile, delimiter=',')
states = []
states.extend([row['state'] for row in csvReader if row['state']])
其他代码已被省略,但对话框的其余部分工作正常。
currentIndexChanged
是一个信号,当您选择 QComboBox
的选项时触发,并且由于您的 QComboBox
中没有项目,它永远不会触发,除了没有在这种情况下需要使用它。您必须做的是使用 addItems()
方法
def __init__(self, another_arguments):
#
# some code
#
with open('States.csv') as csvDataFile:
csvReader = csv.DictReader(csvDataFile, delimiter=',')
states = [row['state'] for row in csvReader if row['state']]
self.optStates.addItems(states)