[PyQt] QsciScintilla Lexer disappears?
Phil Thompson
phil at riverbankcomputing.com
Mon Apr 22 05:57:30 BST 2013
On Mon, 22 Apr 2013 05:21:25 +0430, Lee Harr <missive at hotmail.com> wrote:
> I am trying to use QsciScintilla in a project but I am having some
trouble
> with the Lexer. I don't understand why this code shows the lexer at
> the end of __init__ but when clicking in the margin it shows None.
>
> Any thoughts?
>
>
>
> import sys
> from PyQt4.QtCore import SIGNAL
> from PyQt4.QtGui import QApplication
> from PyQt4.Qsci import QsciScintilla, QsciLexerPython
>
>
> class SimplePythonEditor(QsciScintilla):
> def __init__(self, parent=None):
> super(SimplePythonEditor, self).__init__(parent)
>
> self.setMarginSensitivity(1, True)
> self.connect(self,
> SIGNAL('marginClicked(int, int, Qt::KeyboardModifiers)'),
> self.on_margin_clicked)
>
> lexer = QsciLexerPython()
> self.setLexer(lexer)
> print self.lexer()
>
> def on_margin_clicked(self, nmargin, nline, modifiers):
> print self.lexer()
>
>
> if __name__ == "__main__":
> app = QApplication(sys.argv)
> editor = SimplePythonEditor()
> editor.show()
> app.exec_()
Because setLexer() doesn't keep a reference to the lexer. Either give the
lexer a parent or keep an explicit reference.
Phil
More information about the PyQt
mailing list