PyQt5 によるコンソールの作成

2016年10月15日

はじめに

PyQt5 によるコンソール (もどき) の作成について。

環境

  • Windows 7 64 bit
  • MSYS2 64 bit (MinGW w64)
  • Anaconda3 4.1.11
  • PyQt5 5.7

ファイル

使い方

起動すると、コマンドが打てる。コマンドを打つと、入力がそのまま出力される。コマンド履歴機能付き。

キー操作

  • ←, Ctrl+B: カーソルを左へ移動
  • →, Ctrl+F: カーソルを右へ移動
  • ↑, Ctrl+P: コマンド履歴を前へたどる
  • ↓, Ctrl+N: コマンド履歴を後へたどる
  • Ctrl+A: コマンドラインの先頭へ移動
  • Ctrl+E: コマンドラインの最後へ移動
  • Ctrl+U: カーソルからコマンドラインの先頭までの文字を削除
  • Ctrl+K: カーソルからコマンドラインの最後までの文字を削除
  • Delete, Ctrl+D: カーソル位置の文字、あるいは選択した文字列を削除
  • BackSpace, Ctrl+H: カーソル位置の前の文字、あるいは選択した文字列を削除
  • Enter, Ctrl+J, Ctrl+M: コマンドを実行

マウスで選択して右クリックのポップアップメニューでテキストのコピーが可能。ペーストは、コマンド入力部分にのみ可能。

コマンドの実装

Console クラスを継承して、メソッド executeCommand() をオーバーライドすればよいはず。executeCommand() は、True を返すと次のコマンド入力待ちになるが、False を返すと入力継続扱いになる。入力は 1 行ずつ渡される。メソッド printConsole() で文字列を出力できる。