1

私は小さな IDE を作っています - 主に楽しみのためです! すべてを Python で記述し、PyQt5 ライブラリを使用して GUI を構築します。

現在のステータスのスクリーンショットは次のとおりです。

ここに画像の説明を入力

コード エディター自体は、メイン ウィンドウに埋め込まれているウィジェットにQTextEdit()埋め込まれた単純なウィジェットです。QFrame()したがって、親と子の関係は次のようになります (少し単純化されています)。

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

QSyntaxHighlighter()PyQt5のクラスを使用して、いくつかの基本的な構文の強調表示を実装しました。それは素晴らしいことですが、まだ素晴らしいとは言えません。QScintillaバクリウさんは、パッケージを見てみるようにアドバイスしてくれました。今、私はいくつかの質問に苦労しています:


質問 1: QScintilla のインストール

これは、QScintilla2 について見つけることができる PyQt ドキュメントです: http://pyqt.sourceforge.net/Docs/QScintilla2/。どうやら Windows では、QScintilla2 のソース コードをダウンロードしてdll-file にビルドする必要があるようです。もっと便利な方法はありませんか?たとえば、ビルド済みのパッケージ (インストーラー付き) はありますか?

このダウンロード ページも見つけました: 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実際にそれを使用して QScintilla エディターを QFrame 内に埋め込むにはどうすればよいですか?


質問 2: Scintilla と SciTE のどちらですか?

Scintilla (および QScintilla) について読んでいて、SciTE に出くわしました。誰かがこのソフトウェアの素晴らしいインストーラーを作成しました: http://www.ebswift.com/scite-text-editor-installer.html。私の PyQt GUI に SciTE を埋め込むことをお勧めしますか? もしそうなら、プレーンな「SciTE」の代わりに「QSciTE」が必要ではないでしょうか?


質問 3: いくつかのサンプル コード

(Q)Scintilla または (Q)SciTE をインストールしたら、何らかの方法で開始する必要があります。既に Scintilla/SciTE を PyQt GUI に埋め込んでいる場合は、サンプル コードを投稿してください。それは非常に役に立ちます:-)


編集
数か月後、私はこの古い質問に戻ってきました。それまでの間、私は友人の Matic Kukovec と協力して、QScintilla の使用方法に関する素晴らしいチュートリアルを作成しました。

ここに画像の説明を入力

https://qscintilla.com/

QScintilla はすばらしいツールですが、情報が非常に不足しています。このイニシアチブが、非常に必要とされているドキュメントを提供できることを願っています。

4

2 に答える 2

2

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_()
于 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:\..\アナコンダ\スクリプト\

この.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 コマンド シェルを開き (もちろん、これも管理者権限で!)、次のコマンドを入力しました。

> 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 に答える