1

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

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

在此处输入图像描述

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

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

QSyntaxHighlighter()我使用PyQt5中的类实现了一些基本的语法高亮。这很棒——但还不是很棒。Bakuriu先生建议我看一下QScintilla包裹。现在我纠结于几个问题:


问题一:安装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.>>. 因此,如果我解释正确,我可以通过dll这种方式获得预构建的 Scintilla -file。但是这个下载页面并没有在任何地方提到 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 。在我的 PyQt GUI 中嵌入 SciTE 是否可取?如果是这样 - 我不需要'QSciTE'而不是简单的'SciTE'吗?


问题3:一些示例代码

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


编辑
几个月后,我回到了我的这个老问题。与此同时,我与我的朋友 Matic Kukovec 合作,编写了一个关于如何使用 QScintilla 的精彩教程:

在此处输入图像描述

https://qscintilla.com/

QScintilla 是一个很棒的工具,但信息非常稀缺。我希望这个倡议可以提供急需的文件。

4

2 回答 2

2

Q1:

您需要安装 QScintilla 和 Python 绑定。我不知道 Windows,但它似乎在pip上可用。

Q2:

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

问题 3:

QsciScintilla对象是 QWidget 的子类,因此您可以简单地运行

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

app = QApplication([])
sci = QsciScintilla()
sci.show()
app.exec_()
于 2016-07-06T11:13:36.070 回答
1

谢谢先生/女士。@DisplayName 为您解答。我得到了它的工作,我在这里为 Windows 用户放了一点旁注。

我的系统如下:

_

步骤1:

QScintilla-2.9.2-cp35-none-win_amd64.whl从站点https://pypi.python.org/pypi/QScintilla下载文件。将文件放入文件夹:

C:\..\Anaconda\脚本\

我们将使用这个.whl文件来安装 QScintilla。

_

第2步:

cmd以管理员权限打开 Windows工具!现在输入以下命令:

> cd "C:\..\Anaconda\Scripts"

这会将cmd外壳带到正确的位置。现在输入以下命令:

> pip3 install QScintilla

如果一切顺利,您会收到以下消息:

> pip3 install QScintilla

    Collecting QScintilla
      Downloading QScintilla-2.9.2-cp35-none-win_amd64.whl (1.6MB)
        100% |################################| 1.6MB 984kB/s
    Collecting PyQt5 (from QScintilla)
      Downloading PyQt5-5.6-cp35-none-win_amd64.whl (74.7MB)
        100% |################################| 74.7MB 23kB/s
    Collecting sip (from PyQt5->QScintilla)
      Downloading sip-4.18-cp35-none-win_amd64.whl (46kB)
        100% |################################| 51kB 5.7MB/s
    Installing collected packages: sip, PyQt5, QScintilla
    ..
    Successfully installed PyQt5-5.6 QScintilla-2.9.2 sip-4.18

_

第 3 步:

第一次拍摄时我没有收到“安装成功”的消息。相反,我收到以下错误消息:

PermissionError: [Errno 13] Permission denied: 'C:\..\anaconda\Lib\site-packages\sip.pyd'

显然无法访问sip.pyd位于目录中的文件。C:\..\anaconda\Lib\site-packages所以我打开了另一个 Windows 命令 shell(当然又是管理员权限!)并输入了以下命令:

> icacls "C:\..\Anaconda\Lib\site-packages" /grant "Administrators":(OI)(CI)F /T

此命令将授予所有“管理员”用户对文件site-packages夹中所有文件及其子文件夹中所有文件的完全访问权限(读取 - 修改和写入)。执行此命令时,您应该收到以下消息:

    ...
    processed file: C:\..\Anaconda\Lib\site-packages\__pycache__\readline.cpython-35.pyc
    processed file: C:\..\Anaconda\Lib\site-packages\__pycache__\simplegeneric.cpython-35.pyc
    processed file: C:\..\Anaconda\Lib\site-packages\__pycache__\six.cpython-35.pyc
    processed file: C:\..\Anaconda\Lib\site-packages\__pycache__\test_path.cpython-35.pyc
    processed file: C:\..\Anaconda\Lib\site-packages\__pycache__\test_pycosat.cpython-35.pyc
    ...

    Successfully processed 38589 files; Failed processing 0 files

现在您可以重复第 2 步,它应该可以工作了!

于 2016-07-06T13:06:29.253 回答