Форум сайта python.su
Есть такой пример:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.move(300, 300)
self.setWindowTitle(u'QSettings')
boxlay = QtGui.QHBoxLayout(self)
frame = QtGui.QFrame(self) # фрейм
frame.setFrameShape(QtGui.QFrame.StyledPanel)
frame.setFrameShadow(QtGui.QFrame.Raised)
boxlay.addWidget(frame)
gridlay = QtGui.QGridLayout(frame)
label = QtGui.QLabel(u'Замените текст ниже на свой:', frame)
gridlay.addWidget(label, 0, 0)
self.edit = QtGui.QLineEdit(u'', frame)
gridlay.addWidget(self.edit, 1, 0)
self.settings = QtCore.QSettings('test', 'testApp')
def closeEvent(self, event):
val = QtCore.QVariant(self.edit.text())
print val.toString().toUtf8()
self.settings.setValue('text', val)
if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
QVariant::load(QDataStream &s): type builtin_function_or_method unknown to QVariant.Не понимаю, что я сделал здесь неправильно.
Офлайн
УМВР (по крайней мере, никакого трейсбека).
Debian lenny, PyQt 4.4.2, Qt 4.4.3
P.S. На будущее, не плохо бы показывать полный трейсбек
P.P.S. Небольшой патчик ;)
--- qtgc.py.orig 2008-11-15 22:11:18.490921470 +0600
+++ qtgc.py 2008-11-15 22:10:36.598922656 +0600
@@ -8,6 +8,8 @@
QtGui.QWidget.__init__(self)
self.move(300, 300)
self.setWindowTitle(u'QSettings')
+
+ self.settings = QtCore.QSettings('test', 'testApp')
boxlay = QtGui.QHBoxLayout(self)
frame = QtGui.QFrame(self) # фрейм
@@ -18,15 +20,16 @@
gridlay = QtGui.QGridLayout(frame)
label = QtGui.QLabel(u'Замените текст ниже на свой:', frame)
gridlay.addWidget(label, 0, 0)
- self.edit = QtGui.QLineEdit(u'', frame)
+ self.edit = QtGui.QLineEdit(self.settings.value('text').toString(), frame)
gridlay.addWidget(self.edit, 1, 0)
- self.settings = QtCore.QSettings('test', 'testApp')
+
def closeEvent(self, event):
val = QtCore.QVariant(self.edit.text())
- print val.toString().toUtf8()
self.settings.setValue('text', val)
+ print u"Settings: %s" % unicode(self.settings.value('text').toString())
+
if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
Офлайн
Кстати, зачёт последним (AFAIR, The gray Cardinal и 124bit) вопрошающим по теме pyqt4, что указывают полноценный демо-код, сильно-сильно облегчают жизнь отвечающему.
Офлайн
j2aЭто единственное сообщение (одна строка), я его и привёл.
P.S. На будущее, не плохо бы показывать полный трейсбек
Офлайн
Сейчас заменил в конструкторе QSettings имя приложения (“testApp”) на чуть-чуть другое и вроде всё пошло.
Это значит, что я в процессе отладки просто умудрился записать в свой параметр “text” что-то шокирующее библиотеку :). Уж не знаю, что это было :).
Офлайн
j2a
Спасибо за помощь :).
Офлайн
The gray CardinalИщи в ~/.config/test/testApp.conf чего у тебя там было
Сейчас заменил в конструкторе QSettings имя приложения (“testApp”) на чуть-чуть другое и вроде всё пошло.
Это значит, что я в процессе отладки просто умудрился записать в свой параметр “text” что-то шокирующее библиотеку :). Уж не знаю, что это было :).
Отредактировано (Ноя. 15, 2008 19:57:37)
Офлайн
j2atext=@Variant(\0\0\0\x7f\0\0\0\x1b\x62uiltin_function_or_method\0)
Ищи в ~/.config/test/testApp.conf чего у тебя там было
Офлайн
Ребят, подскажите как с помощью QSettings сохранить состояние QCheckBox? 2 дня уже бьюсь….
Офлайн