将 INI 文件中的值加载到组合框

Posted

技术标签:

【中文标题】将 INI 文件中的值加载到组合框【英文标题】:Load values from INI file to combo box 【发布时间】:2015-07-02 14:26:57 【问题描述】:

我有一个GUI(使用 PyQt5 和 Python3.4 创建)。我有一对combobox:第一个是汽车品牌,第二个是所选品牌的车型。

我有一个INI file 来保存在GUI 中输入的最后一个值,所以当我重新打开GUI 时,会自动输入最后一个值/参数。 这适用于我的所有其他参数,combobox 除外。 我在INI file中写了currentIndex,当我关闭我的GUI时,INI文件中写入了正确的索引,但是当我再次打开GUI时,索引变为0。

这就是我的代码的样子:

def comboSelect(self):

    config = configparser.ConfigParser()
    config.read('D:\File\save.ini')

    self.indexModel = ui.dmpModele.currentIndex()
    config.set('de_sec', 'dmp_modele', str(self.indexModel))

    with open('D:\File\save.ini', 'w') as configfile:
        config.write(configfile) # write the index in the INI file

if __name__ == "__main__":

    config = configparser.ConfigParser()
    config.read('D:\File\save.ini')

    p.indexModel = config.get('de_sec', 'dmp_modele') # get the value of index from INI file
    ui.dumperModele.setCurrentIndex(int(p.indexModel)) # pass the index to combo box

我错过了什么?

【问题讨论】:

对我来说很好。您的代码的其他部分必须重置组合框的索引。 @ekhumoro 我曾经有一个 setCurrentIndex 但我删除了它。我会寻找导致问题的其他原因。 @ekhumoro 我似乎找不到任何正在重置组合框索引的东西。你有什么想法可以这样做吗? 【参考方案1】:

好的,我找到了。这是一个愚蠢的错误。 在我的

if __name__ == "__main__":

我在从 .ini 文件中获取值之前调用了这些函数,因此将其归零。就是这样。

UPDATE :现在 index 是正确的,但 combobox 中的名称不正确。它没有改变,即使我设置了一个带有正确 indexsetCurrentIndex。怎么样?

【讨论】:

你怎么知道它不会改变?在setCurrentIndex 调用之后立即放置print(combo.currentText()) 的输出是什么? @ekhumoro 我知道它不会改变,因为我看到了它。我正在打印索引(它是正确的),但combobox 中的名称是错误的,它与正确的索引不匹配(它与索引 0 匹配)。 所以,正如我之前建议的那样,一定是您的代码的其他部分正在重新设置当前项目。 @ekhumoro 我看过,但什么也没找到。除了setCurrentIndex,还有什么会导致这种情况,拜托? 如果索引始终重置为零,可能的原因是组合框中的项目正在重置。但实际上,如果没有看到实际代码,就不可能给出有用的答案。您的代码中只能有一些对组合框的引用。使用您的编辑器将它们全部找到,然后系统地对每一个进行注释,直到问题消失为止。

以上是关于将 INI 文件中的值加载到组合框的主要内容,如果未能解决你的问题,请参考以下文章

将actionscript 3中的xml文件中的值读取到组合框中

尝试在 mousepress 事件中使用来自另一个组合框的值加载自定义组合框

Csharp:根据组合框中的值加载选中的项目列表

如何将组合框的值转换为 vba 模块中的字符串?

我应该如何将列中的所有数据加载到 datagridview 组合框?

如何在 Access 中打开表单,自动选择组合框中的值并显示详细信息?