PyQt4 高亮显示
我正在尝试在PyQt4的文本编辑器中添加一些语法高亮功能。我在文档中找到了一个示例,这个示例在用C++编译时可以正常工作,但当我把它转换成Python/PyQt时,它就不再有效了。
出问题的代码部分(不再高亮任何内容)是:
def highlightCurrentLine(self):
extraSelections = []
if not self.isReadOnly():
selection = QTextEdit.ExtraSelection()
lineColor = QColor(Qt.yellow).lighter(160)
selection.format.setBackground(lineColor)
selection.format.setProperty(QTextFormat.FullWidthSelection, QVariant(True))
selection.cursor = self.textCursor()
selection.cursor.clearSelection()
extraSelections.append(selection)
self.setExtraSelections(extraSelections)
这个部分是通过以下代码调用的:
self.connect(self, SIGNAL('cursorPositionChanged()'), self.highlightCurrentLine)
有没有人知道为什么这不管用了?
我使用的版本是:Python 2.6.2,PyQt 4.4.4
2 个回答
0
把 lineColor
存储到某个地方(比如 self.lineColor
)。否则,当这个方法结束时,Python 会把这个对象丢掉,这样 format
就会使用一个不合法的指针。
1
好的... 结果证明我没有发疯,我只是用的PyQt4的旧版本。
顺便说一下,Ubuntu 9.04自带的PyQt4版本是4.4.4,但这个功能似乎需要4.5以上的版本。
我把PyQt4升级到了4.6,现在一切正常(而且4.6似乎还有一些不错的新功能)。