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 以降が必要なようです。

私は PyQt4 4.6 にアップグレードしましたが、問題なく動作します (さらに、4.6 にはいくつかの優れた新しい機能もあるようです)。

于 2009-10-01T19:02:20.203 に答える
0

lineColorどこかに保存します(のようにself.lineColor)。それ以外の場合、Pythonはメソッドが戻るときにオブジェクトを破棄しformat、不正なポインターを使用します。

于 2009-09-24T15:02:02.157 に答える