2

我正在尝试向 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

4

2 回答 2

1

好吧...原来我并没有发疯,我只是使用了一个过时的 PyQt4 版本。

有关信息,Ubuntu 9.04 附带的 PyQt4 版本是 4.4.4,但此功能似乎需要 4.5+。

I've upgraded to PyQt4 4.6 and it works fine (plus 4.6 seems to have some nice new functionality too).

于 2009-10-01T19:02:20.203 回答
0

保存lineColor在某处(如self.lineColor)。否则,Python 将在方法返回时丢弃该对象,并format使用非法指针。

于 2009-09-24T15:02:02.157 回答