[PyQt] Qt message handler has wrong signature with Qt5
Baz Walter
bazwal at ftml.net
Wed Apr 3 00:16:49 BST 2013
Hello
For Qt4, QtCore.qInstallMsgHandler installs a Qt message handler with
the following signature:
void myMsgHandler(QtMsgType, const char *);
Using PyQt4 with Qt4, this correctly results in the second argument
being passed as a python bytes object (for both the v1 and v2 apis).
However, for Qt5 it only does this when using Python3 with the v2 api.
For Python3 with the v1 api, it passes a QString, and for Python2 it
either passes a QString (v1 api) or a python unicode object (v2 api).
I realize that QtCore.qInstallMsgHandler has been deprecated in Qt5, but
it would still be great if this could be fixed at some point.
Simple test script:
import sys, sip
sip.setapi('QString', int(sys.argv[1]) if sys.argv[1:] else 1)
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])
def handler(kind, msg):
print('API v%s: %s, %s' % (
sip.getapi('QString'), type(kind), type(msg)))
QtCore.qInstallMsgHandler(handler)
app.desktop().screenGeometry(None)
--
Regards
Baz Walter
More information about the PyQt
mailing list