PythonでTUIアプリを作ろう 第二部入魂編 ( その5 TUIアプリケーションの作成 )
TUI部品とLiSTDBを連動させ、TUIアプリケーションを完成させよう。
PythonでTUIアプリを作ろう(その1〜その9)で説明したPython UrwidによるTUI部品に、前回作成したデータとの連携機能を追加し、アプリケーションを完成していきます。
[1] ListDBアクセスの組み込み
ダミーデータで動かしていた部分を、ListDBにアクセスするよう変更していきます。
例えば、「PythonでTUIアプリを作ろう(その9 DialogBoxの利用)」では、テーブル一覧を下記のようなコードで実行していました。
def get_table(self, button=None):
tables = u'テーブルA テーブルB テーブルC テーブルE テーブルF テーブルG テーブルH テーブルI テーブルJ テーブルK テーブルL テーブルM'.split()
my_select_box(self.main_loop, tables, self.common.table_name, u"Tables", self.get_table_name)
def get_table_name(self, button):
self.common.table_name = button.get_label()
self.display()
この部分を、ListDBへのアクセスに変更します。
基本的に、get_managerでManagerオブジェクトを取得し、「PythonでTUIアプリを作ろう 第二部入魂編(その2 ListDBの構造について)」内で説明した関数を呼び出すことになります。
(1) データテーブル一覧の表示と選択
先にダミーデータで実行していた「アプリケーション起動後に行うデータテーブル取得」の部分は、下記のようなコードになります。
# list.py
from listdb.manager import get_manager
:
def get_table(self, ignored=None):
manager = get_manager(self.common.database_name, self.common.database_connect)
tables = manager.get_db_names()
tables.sort()
manager.close()
my_select_box(self.main_loop, tables, self.common.table_name, u"Tables", self.get_table_name)
def get_table_name(self, button):
self.common.table_name = button.get_label()
self.common.reset()
self.display()
(2) List一覧画面
(1)で選択されたデータテーブルを、List一覧として表示する部分も示しておきます。こちらは、search_db関数を使用しています。
# listwalker.py
from listdb.manager import get_manager
:
manager = get_manager(common.database_name, common.database_connect)
listdb = manager.search_db(common.table_name, common.category, common.search, common.from_rec, rows+1)
self.record_count = manager.get_record_count(common.table_name, common.category, common.search)
manager.close()
このように、ダミーデータの部分を、ListDBアクセスに変更していくことで、アプリケーションを完成させていくわけです。詳細はソースコードを見てください。
[2] アプリケーションの動作
さて、なにはともあれ「百聞は一見に如かず」ですね。
完成したアプリケーションの動作を確認をしていきましょう。ここからソースコードをダウンロードし、実際に動かしてみるとわかりやすいと思います。
(1) スクリプトの起動
ダウンロードしたディレクトリ(ListDBP)に移動して、下記のコマンドを入力します。なお、pythonコマンドは実行環境に合わせてください。Python3の場合、python3になるでしょう。このスクリプトそのものは、Python2.7でも動作します。(当然ですが、Python本体とUrwidは、事前にインストールしておく必要があります。)
python list.py
(2) データテーブル一覧の表示と選択
起動後、画面上の<T>ボタンをクリック、あるいはキーボードから’T‘を押すと、下図のようにデータテーブルの一覧が表示されるので、表示したいデータを選択します。ここでは、「ブックオフ店舗情報(東京)」を選んだとします。
(3) List一覧画面
「ブックオフ店舗情報(東京)」のList一覧が表示されます。
(4) Categoryの選択
この画面から、<C>ボタンをクリック、あるいはキーボードから’C‘を押すと、Categoryによる絞り込みができます。このデータテーブルでは、Categoryは東京二十三区になっているので、その区分の一覧が表示されます。
(5) 文字列検索
この画面から、<S>ボタンをクリック、あるいはキーボードから’S‘を押すと、文字列による絞り込みができます。
(6) Detail表示
List一覧画面からデータをEnterキー、あるいはマウスで選択すると、Detail表示画面に移行します。一応、下部のボタンによる更新処理も可能です。
(7) Google Mapsとの連携
TUI部品とは全く関係ありませんが、ちょっとした機能を付加してみました。
Field01、あるいはField02のフィールド名が’Address’あるいは’Map’の場合、上記(6)のDetail表示にリンク機能が働きます。
ここでEnterキーを叩くか、マウスでクリックするとブラウザが起動、Google Mapsに該当アドレスが表示されます。
以上が、Python UrwidによるTUIアプリケーションの概要です。簡単なアプリケーションですが、ニーズによっては役立つ分野があるかもしれません。
次回は、このListDBPの実行環境について説明しようと思います。