python-3.x - 如何在自制的PyQt GUI中嵌入 'QScintilla'代码编辑器?

标签 python-3.x pyqt scintilla scite qscintilla

我正在制作一个小型 IDE - 主要是为了好玩!我用 Python 编写所有内容,并使用 PyQt5 库构建 GUI。

这是当前状态的屏幕截图:

enter image description here

代码编辑器本身很简单QTextEdit()小部件 - 嵌入 QFrame()小部件,它本身嵌入在主窗口中。所以父子关系如下(只是稍微简化了一些):

QMainWindow( ) >> QFrame( ) >> QTextEdit( )

我使用 QSyntaxHighlighter() 实现了一些基本的语法突出显示来自 PyQt5 的类。这很棒——但还不是很棒。 Bakuriu先生建议我看看QScintilla包裹。现在我遇到几个问题:


问题1:安装QScintilla

这是我可以找到的有关 QScintilla2 的 PyQt 文档: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 是否-file 将在 PyQt 中工作。毕竟下载的是Scintilla ,不是QScintilla .

一旦我得到 dll -file,我实际上如何使用它在 QFrame 中嵌入 QScintilla 编辑器?


问题 2:Scintilla 还是 SciTE?

阅读有关 Scintilla(和 QScintilla)的内容时,我偶然发现了 SciTE。有人为这个软件制作了一个很好的安装程序:http://www.ebswift.com/scite-text-editor-installer.html 。建议将 SciTE 嵌入到我的 PyQt GUI 中吗?如果是这样 - 我不需要“QSciTE”而不是普通的“SciTE”吗?


问题 3:一些示例代码

安装 (Q)Scintilla 或 (Q)SciTE 后,我将需要以某种方式开始。如果有人已经在 PyQt GUI 中嵌入了 Scintilla/SciTE,请发布一些示例代码。这将非常有帮助:-)


编辑
几个月后,我又回到了这个老问题。与此同时,我与我的 friend Matic Kukovec 合作,制作了一个关于如何使用 QScintilla 的很好的教程:

enter image description here

https://qscintilla.com/

QScintilla 是一个很棒的工具,但信息非常稀缺。我希望这一举措能够提供急需的文档。

最佳答案

第一季度:

您需要安装 QScintilla 和 Python 绑定(bind)。我不知道适用于 Windows,但似乎可以在 pip 上找到.

第二季度:

Scintilla 是编辑器小部件。 SciTE 是一个使用编辑器小部件的完整应用程序,可使用 Lua 语言编写脚本。 QScintilla 是 Scintilla 编辑器小部件的 Qt 端口。

第三季度:

一个QsciScintilla object 是 QWidget 的子类,因此您可以简单地运行:

from PyQt5.QtWidgets import QApplication
from PyQt5.Qsci import QsciScintilla

app = QApplication([])
sci = QsciScintilla()
sci.show()
app.exec_()

关于python-3.x - 如何在自制的PyQt GUI中嵌入 'QScintilla'代码编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38222166/

相关文章:

c# - WPF XAML 问题中的 ScintillaNET

delphi - DScintilla,代码折叠对我不起作用

python-3.x - '[Errno 26] 文本文件忙 : '/home/*****/.wdm/drivers/chromedriver/83.0.4103.39/linux64/chromedriver' '

python - 将扁平化列表转换为字典列表

python - 在 PyQt 中,在主窗口和线程之间共享数据的最佳方式是什么

python - 如何在Qprinter pyqt5中打印带有图像的html页面

python - 单击启动菜单的按钮后保持菜单打开

python-3.x - IPython + Pandas 无法从 .csv 中绘制数据

python - Python中使用GRIP处理图像的Segmentation Fault