Я ожидал автозаполнения ключевых слов Python (например, for, range, lambda
) и надеялся на предложения автозаполнения стандартных библиотечных модулей и функций (например, sys, os.path
и т. д.) при настройке API с помощью лексера QsciLexerPython, но в приведенном ниже примере кода сжато и обновлено с этого веб-сайта, единственного автозаполнения что происходит, четыре строки добавляются в список.
Я делаю что-то не так, и если да, то как мне заставить ключевые слова python регистрироваться в автозаполнении? (мой главный вопрос здесь, конечно)
Если это ожидаемое поведение, то какую роль играет лексер в автозаполнении и почему ключевые слова из лексера не назначаются спискам автозаполнения в этом примере?
Наконец, возможно ли иметь стандартные библиотечные модули и подмодули Python в автозаполнении, и что для этого требуется?
"""Base code originally from: http://kib2.free.fr/tutos/PyQt4/QScintilla2.html"""
import sys
from PyQt5 import QtWidgets, Qsci
app = QtWidgets.QApplication(sys.argv)
editor = Qsci.QsciScintilla()
lexer = Qsci.QsciLexerPython()
editor.setLexer(lexer)
## setup autocompletion
api = Qsci.QsciAPIs(lexer)
api.add("aLongString")
api.add("aLongerString")
api.add("aDifferentString")
api.add("sOmethingElse")
api.prepare()
editor.setAutoCompletionThreshold(1)
editor.setAutoCompletionSource(Qsci.QsciScintilla.AcsAPIs)
editor.show()
editor.setText(open(sys.argv[0]).read())
sys.exit(app.exec_())