2016-07-06 208 views
0

我在做一個小IDE - 主要是爲了好玩!我用Python編寫所有東西,並使用PyQt5庫構建GUI。如何在自制的PyQt GUI中嵌入'QScintilla'代碼編輯器?

這裏的當前狀態截圖:

enter image description here

代碼編輯器本身是一個簡單的QTextEdit()部件 - 嵌入QFrame()小部件,它本身嵌入在主窗口。所以,父母和孩子之間的關係如下(只是有點簡化):

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

我實現了一些基本的語法高亮,使用來自PyQt5的QSyntaxHighlighter()類。這很棒 - 但還不夠棒。 Bakuriu先生建議我看看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文件,我該如何真正使用它來在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)賽特,我將需要得到某種方式啓動。如果有人已經在PyQt GUI中嵌入了Scintilla/SciTE,請發佈一些示例代碼。這將是非常有益的:-)


編輯
幾個月來,我又回到了我的這個老問題之後。

enter image description here

https://qscintilla.com/

QScintilla是一個奇妙的工具,但信息是非常稀少:在此期間,我與我的朋友馬蒂奇Kukovec,這導致對如何使用QScintilla一個很好的教程合作。我希望這一舉措能夠提供非常需要的文件。

回答

1

Q1:

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

Q2:

Scintilla是編輯器小部件。 SciTE是一款使用編輯器小部件的完整應用程序,可通過Lua語言編寫腳本。 QScintilla是Scintilla編輯器小部件的Qt端口。

Q3:

一個QsciScintilla對象是QWidget的一個子類,這樣你就可以簡單地運行:

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

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

謝謝@DisplayName!那麼不需要構建和/或安裝QScintilla來在我的PyQt5 GUI中使用它?只要進口就足夠了?這太棒了 –

+0

對不起,我沒有清楚,我沒有回答Q1,因爲我沒有使用Windows,但是,你需要安裝它,它不是Qt或PyQt的一部分。例如在Linux上,我會'apt-get install python3-pyqt5.qsci' –

+0

非常感謝。你的回答確實對我有幫助:-) –

1

謝謝Mr./Mss。 @DisplayName爲你的答案。我得到了它的工作,併爲Windows用戶提供了一個小旁註。

我的系統是如下:

_

S TEP 1:

從站點https://pypi.python.org/pypi/QScintilla下載文件QScintilla-2.9.2-cp35-none-win_amd64.whl。 把文件夾中:

C:\ .. \蟒蛇\腳本\

我們將利用這個.whl文件做QScintilla的安裝。

_

第2步:

打開Windows cmd工具以管理員權限!現在,鍵入以下命令:

> 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 

_

STEP 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,它應該可以工作!

相關問題