【问题标题】:How to fill a QComboBox with elements from a CSV file如何用 CSV 文件中的元素填充 QComboBox
【发布时间】:2018-06-30 10:21:25
【问题描述】:

我在 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']])

省略了其他代码,但对话框的其余部分工作正常。

【问题讨论】:

    标签: python csv pyqt pyqt5 qcombobox


    【解决方案1】:

    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)
    

    【讨论】:

    • 谢谢!像魅力一样工作。出于某种原因,我也将它放在了 pyqtSlot() 中,并且需要将它放在主 init 中。现在像冠军一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2014-01-27
    • 2019-07-23
    • 1970-01-01
    相关资源
    最近更新 更多