[Qt-interest] setValue of QSettings adds undesired whitespaces in settings file

Luca Fasano lucafasano at interfree.it
Mon Jun 29 10:41:17 CEST 2009


Hi all,
As described in mail subject, I noticed that if you use setValue()
method of a Qsettings object, undesired whitespaces are added to
settings file. For example if you have an entry consisting of a comma
separated list, whitespaces are added in it, even if setValue() only
adds a *new* group.
This is not a trivial bug *in Python* if you want to use the same file
for both QSettings and logging configuration. In fact Python
logging.config.fileConfig() method does not recognize comma separated
lists with whitespaces.

Here is a very simple example:
- starting .ini file:

[group_base]
key1=value1,value2,value3 #warning! this list has to contain comma
#separated value *without* whitespaces when script starts


- python script:

import os, sys
from PyQt4 import QtGui, QtCore

class MainWin(QtGui.QMainWindow):
    def __init__(self, *args):
        super(MainWin, self).__init__(*args)
        self.settings = QtCore.QSettings('./settings.ini',
QtCore.QSettings.IniFormat, self)

    def changeSettings(self):
        settings = self.settings
        settings.beginGroup('added_group')
        settings.setValue('added_key', QtCore.QVariant('added_value'))
        settings.endGroup()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    m = MainWin()
    m.changeSettings()
    m.show()
    os._exit(app.exec_())



- .ini file after script execution (with .ini file in same folder of
script):

[group_base]
key1=value1, value2, value3 #warning! this list has to contain comma
#separated value *without* whitespaces when script starts

[added_group]
added_key=added_value


Notice whitespaces between value1, value2 and value3!!!!

Thanks







More information about the Qt-interest-old mailing list