将 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 中的名称不正确。它没有改变,即使我设置了一个带有正确 index 的setCurrentIndex
。怎么样?
【讨论】:
你怎么知道它不会改变?在setCurrentIndex
调用之后立即放置print(combo.currentText())
的输出是什么?
@ekhumoro 我知道它不会改变,因为我看到了它。我正在打印索引(它是正确的),但combobox
中的名称是错误的,它与正确的索引不匹配(它与索引 0 匹配)。
所以,正如我之前建议的那样,一定是您的代码的其他部分正在重新设置当前项目。
@ekhumoro 我看过,但什么也没找到。除了setCurrentIndex
,还有什么会导致这种情况,拜托?
如果索引始终重置为零,可能的原因是组合框中的项目正在重置。但实际上,如果没有看到实际代码,就不可能给出有用的答案。您的代码中只能有一些对组合框的引用。使用您的编辑器将它们全部找到,然后系统地对每一个进行注释,直到问题消失为止。以上是关于将 INI 文件中的值加载到组合框的主要内容,如果未能解决你的问题,请参考以下文章
将actionscript 3中的xml文件中的值读取到组合框中
尝试在 mousepress 事件中使用来自另一个组合框的值加载自定义组合框