Я делаю небольшую IDE - в основном для развлечения! Я пишу все на Python и использую библиотеку PyQt5 для создания графического интерфейса.
Вот скриншот текущего состояния:
Сам редактор кода представляет собой простой виджет QTextEdit()
, встроенный в виджет QFrame()
, который сам встроен в главное окно. Таким образом, отношения родитель-потомок выглядят следующим образом (немного упрощенно):
QMainWindow() >> QFrame() >> QTextEdit()
Я реализовал базовую подсветку синтаксиса, используя класс QSyntaxHighlighter()
из PyQt5. Это здорово, но еще не потрясающе. Г-н Бакуриу посоветовал мне взглянуть на пакет QScintilla
. Теперь мучаюсь с несколькими вопросами:
Вопрос 1: установка QScintilla
Это документация PyQt, которую я могу найти о QScintilla2: http://pyqt.sourceforge.net/Docs/QScintilla2/ . По-видимому, в Windows мне нужно было бы загрузить исходный код QScintilla2 и собрать его в dll
-файл. Неужели нет более удобного способа? Например, некоторые готовые пакеты (с установщиком)?
Я также нашел эту страницу загрузки: http://www.scintilla.org/ScintillaDownload.html . На странице загрузки упоминается: <<There is no download available containing only the Scintilla DLL. However, it is included in the SciTE executable full download as SciLexer.DLL.>>
. Итак, если я правильно интерпретирую это, я могу таким образом получить готовый файл Scintilla dll
. Но на этой странице загрузки нигде не упоминается PyQt. Поэтому мне интересно, будет ли файл dll
работать в PyQt. Ведь загрузка идет Scintilla
, а не QScintilla
.
И как только я получу файл dll
, как мне его использовать для встраивания редактора QScintilla в QFrame?
Вопрос 2: Scintilla или SciTE?
Читая о Scintilla (и QScintilla), я наткнулся на SciTE. Кто-то сделал хороший установщик для этого программного обеспечения: http://www.ebswift.com/scite-text-editor-installer.html . Было бы целесообразно встроить SciTE в мой графический интерфейс PyQt? И если да, то не нужен ли мне «QSciTE» вместо простого «SciTE»?
Вопрос 3. Пример кода
После установки (Q)Scintilla или (Q)SciTE мне нужно будет как-то приступить к работе. Если кто-то уже внедрил Scintilla/SciTE в графический интерфейс PyQt, опубликуйте пример кода. Это было бы очень полезно :-)
EDIT
Через несколько месяцев я вернулся к своему старому вопросу. Тем временем я сотрудничал с моим другом Матиком Куковеком, в результате чего получился хороший туториал по использованию QScintilla:
QScintilla — прекрасный инструмент, но информации о нем очень мало. Я надеюсь, что эта инициатива может предоставить столь необходимую документацию.