将Qcombobox的Qsettings写入文件而不关闭Widget
Posted
技术标签:
【中文标题】将Qcombobox的Qsettings写入文件而不关闭Widget【英文标题】:Writing Qsettings of Qcombobox to a file without closing Widget 【发布时间】:2020-03-04 13:03:35 【问题描述】:将Qtablewidget
作为启动小部件运行,并将Con
小部件导入QTableWidget
。来自QCombobox
希望保存并恢复到具有目录路径的文件。每个小部件和布局都有效,问题在于 QCombobox 保存功能。想启动和运行应用程序,当 Qcombobox 的值改变时,self.writeSettings
函数应该运行和写入?但它不起作用。想知道这里有什么问题吗?任何帮助表示赞赏。我在下面重现了最少且高效的代码。
class CON(QtWidgets.QWidget):
def __init__(self, rowTable, parent=None):
super(CON, self).__init__(parent)
self.rowtable = rowTable
self.combo = QtWidgets.QComboBox()
self.combo.addItems(["15","20","25","30","37","45","50","55",
"60","67","75","85","95","105"])
------------------------------------
self.combo.activated.connect(self.setdata)
self.readSettings()
@QtCore.pyqtSlot(int)
def setdata(self, index):
self.writeSettings()
def readSettings(self):
settings = QtCore.QSettings('files/con.ini'.format(self.rowtable) ,QtCore.QSettings.IniFormat)
settings.beginGroup("Con")
self.combo.setCurrentIndex(settings.value("Conoption", 4))
settings.endGroup()
def writeSettings(self):
settings = QtCore.QSettings('files/con.ini'.format(self.rowtable) ,QtCore.QSettings.IniFormat)
settings.beginGroup("Con")
settings.setValue("Conoption",self.combo.currentIndex())
settings.endGroup()
【问题讨论】:
我不明白你,除了你提供的代码不是 MRE 我明白这还不够清楚。我需要重现一个可行且非常短的代码,但首先明天更新并让您知道代码何时更新。 我已经修补了你的代码,我可以执行它,所以我遇到了我在回答中指出的问题。另一方面,令人讨厌的是,您意识到自己的问题不够清晰,并且不努力改进它。 SO 要求您花时间发布最好的问题,因为我们会努力为您提供帮助。 这是很长的代码,我尽量缩短,所以你们可能很快就会发现错误。当我觉得信息不够时,我确实需要时间来重现问题。这就是为什么我在上一篇文章中提到明天更新代码的原因。尽可能多的介绍。 首先当我运行代码时,没有给我任何错误,并查看我的文件以查看 writeSetting 确实创建了任何带有 con0 等的文件......没有这样的文件。但是我很快就会更新...谢谢您的回复。 【参考方案1】:我得到的唯一错误是读取的值被解释为 str,因此为避免这种情况,您必须指明读取的类型:
settings.beginGroup("Con")
self.combo.setCurrentIndex(settings.value("Conoption", 4, int))
settings.endGroup()
【讨论】:
我将您的答案标记为正确,我确实将代码切成小块并且只得到 str 错误。无需上传其他更新,谢谢。以上是关于将Qcombobox的Qsettings写入文件而不关闭Widget的主要内容,如果未能解决你的问题,请参考以下文章