【问题标题】:Writing Qsettings of Qcombobox to a file without closing Widget将Qcombobox的Qsettings写入文件而不关闭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 等的文件......没有这样的文件。但是我很快就会更新...谢谢您的回复。

标签: python pyqt pyqt5 qcombobox qsettings


【解决方案1】:

我得到的唯一错误是读取的值被解释为 str,因此为避免这种情况,您必须指明读取的类型:

settings.beginGroup("Con")
self.combo.setCurrentIndex(settings.value("Conoption", 4, int))
settings.endGroup()

【讨论】:

  • 我将您的答案标记为正确,我确实将代码切成小块并且只得到 str 错误。无需上传其他更新,谢谢。
猜你喜欢
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
相关资源
最近更新 更多