On Wednesday 18 November 2009 11:47, Snouffy wrote: > I've been trying to do some syntax highlighting using PyQt4. I ported > the example given in the documentation of Qt4 to Python. It works fine > on my computer at work (which has PyQt4 version 4.3.3) but doesn't on > my home computer (which has version 4.4.4) : it gets stuck in an > infinite loop.
This is a known issue. There are examples distributed with PyQt that should have been updated to use a slightly different approach. > Here is the code : > > class MyHighlighter(QtGui.QSyntaxHighlighter): > def __init__(self, edit): > QtGui.QSyntaxHighlighter.__init__(self,edit) > > def highlightBlock(self, text): > myClassFormat = QtGui.QTextCharFormat() > myClassFormat.setFontWeight(QtGui.QFont.Bold) > myClassFormat.setForeground(QtCore.Qt.darkMagenta) > pattern = "\\b[A-Z_]+\\b" > > expression = QtCore.QRegExp(pattern) > index = text.indexOf(expression); > while (index >= 0): > length = expression.matchedLength() > self.setFormat(index, length, myClassFormat) > index = text.indexOf(expression, index + length) You need to change the indexOf() calls to indexIn() calls on the QRegExp object: index = expression.indexIn(text, index + length) > What am I missing ? Is this a known bug of version 4.4.4 ? I think there was a behavioural change at some point that affected regular expression searching in QStrings. David -- http://mail.python.org/mailman/listinfo/python-list