python segfaulting, MemoryError (PyQt)
Phil Thompson
phil at riverbankcomputing.com
Tue Apr 28 04:29:07 EDT 2009
On Tue, 28 Apr 2009 03:53:34 +0200, "Denis L" <no at spam.com> wrote:
> Hello,
>
> I'm experiencing odd errors on both windows and linux with the following
> code:
>
> import sys
> from PyQt4.QtCore import *
> from PyQt4.QtGui import *
>
> class Options(QDialog):
> def __init__(self, values):
> QDialog.__init__(self)
>
> self.values = values
>
> fooEdit = QLineEdit(values['foo'])
> self.connect(fooEdit, SIGNAL('textChanged(QString)'),
> lambda value: self.optionChanged('foo', value))
>
> barEdit = QLineEdit(values['bar'])
> self.connect(barEdit, SIGNAL('textChanged(QString)'),
> lambda value: self.optionChanged('bar', value))
>
> layout = QVBoxLayout()
> layout.addWidget(fooEdit)
> layout.addWidget(barEdit)
>
> self.setLayout(layout)
>
> def optionChanged(self, option, value):
> self.values[option] = value
> print self.values
>
> def main(args):
> app = QApplication(args)
> values = dict(foo='', bar='')
> dialog = Options(values)
> dialog.show()
> app.exec_()
>
> if __name__ == '__main__':
> main(sys.argv)
>
>
> If I type a character in fooEdit, another character in barEdit, and then
> delete the character from barEdit I get an unhandled win32 exception
> occured
> in python.exe on windows and segfault on linux.
>
> If I type a character in fooEdit, delete it, and then type a character in
> barEdit I get:
>
> {'foo': PyQt4.QtCore.QString(u'a'), 'bar': ''}
> {'foo': PyQt4.QtCore.QString(u''), 'bar': ''}
> {'foo': Traceback (most recent call last):
> File "L:\home\dev\python\test.py", line 17, in <lambda>
> lambda value: self.optionChanged('bar', value))
> File "L:\home\dev\python\test.py", line 27, in optionChanged
> print self.values
> MemoryError
>
> I'm using Python 2.5.4 and PyQt 4.4.3-1
>
> Thanks in advance for any help.
Works fine for me with current versions.
Phil
More information about the Python-list
mailing list