On 2010-04-22, detlev wrote: > On Donnerstag, 22. April 2010, Mark Summerfield wrote: > > Hi, > > > > I'm starting to convert the examples from my PyQt book to Python 3 with > > API 2. Perhaps I'm not awake yet, but I'm puzzled by this: > > > > Python 3.1.2 (r312:79147, Mar 25 2010, 07:42:02) > > [GCC 4.4.1] on linux2 > > Type "copyright", "credits" or "license()" for more information. > > > > >>> from PyQt4.QtCore import * > > >>> from PyQt4.QtGui import * > > >>> PYQT_VERSION_STR > > > > '4.7.3' > > > > >>> QT_VERSION_STR > > > > '4.6.1' > > > > >>> fh = QFile("/tmp/data") > > >>> fh.open(QIODevice.WriteOnly) > > > > True > > > > >>> out = QDataStream(fh) > > >>> out.writeString("hello") > > > > Traceback (most recent call last): > > File "<pyshell#5>", line 1, in <module> > > out.writeString("hello") > > TypeError: QDataStream.writeString(str): argument 1 has unexpected > > type 'str' > > This should be > > >>> out.writeString("hello".encode()) > > i.e. it must be converted to a bytes object.
Ah, thank you! So basically, the docs which say QDataStream.writeString(str) assume that str is a Python 2 string not a Python 3 string even for API 2:-( > > And also by this: > > >>> fh = QFile("/tmp/data") > > >>> fh.open(QIODevice.WriteOnly) > > > > True > > > > >>> out = QDataStream(fh) > > >>> out << "hello" > > You should use writeString(). When I ported eric to Python3, I stumbled > over both these issues. Oh, sure, I just showed that because it looked like the same problem. Thanks! -- Mark Summerfield, Qtrac Ltd, www.qtrac.eu C++, Python, Qt, PyQt - training and consultancy "C++ GUI Programming with Qt 4" - ISBN 0132354160 _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt