私は自分のプロジェクトでこのクラスを実装しました:
class ScriptEditorTextBox(QsciScintilla):
def __init__(self, parent):
QsciScintilla.__init__(self)
#Lexer
lexer = QsciLexerPython()
#AutoCompletion
api = Qsci.QsciAPIs(lexer)
api.add('aLongString')
api.add('aLongerString')
api.add('aDifferentString')
api.add('sOmethingElse')
api.prepare()
self.setLexer(lexer)
self.setAutoCompletionThreshold(1)
self.setAutoCompletionSource(QsciScintilla.AcsAPIs)
#LineHighlight
self.setCaretLineVisible(True)
self.setCaretLineBackgroundColor(QColor("gainsboro"))
#AutoIndentation
self.setAutoIndent(True)
self.setIndentationGuides(True)
self.setIndentationsUseTabs(True)
self.setIndentationWidth(4)
#Margins
self.setMarginsBackgroundColor(QColor("gainsboro"))
self.setMarginsFont(QFont("Consolas", 9, 87))
self.setMarginLineNumbers(1, True)
self.setMarginLineNumbers(2, False)
self.setMarginWidth(1, QString().setNum(10))
self.setMarginWidth(2, 10)
self.connect(self, SIGNAL("linesChanged()"), self._linesChanged)
def _linesChanged(self):
width = QString().setNum(self.lines() * 10)
self.setMarginWidth(1, width)
すべてが正常に開始されますが、後でEnterキーを押すと、自動インデントされません。また、オートコンプリートもありません(ただし、何をオートコンプリートする必要があるかさえわかりません)。
どんな提案にもとても感謝しています。