【问题标题】:Load values from INI file to combo box将 INI 文件中的值加载到组合框
【发布时间】: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 我似乎找不到任何正在重置组合框索引的东西。你有什么想法可以这样做吗?

标签: python combobox ini pyqt5 qcombobox


【解决方案1】:

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

if __name__ == "__main__":

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

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

【讨论】:

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