UIパネルとUIボタンの基本的な使い方②
Pythonista3でのTable ViewやNavigation Viewといったリストや画面切り替えのような機能を追加していきます。
今までのボタンなどの単純動作よりやや複雑となりスクリプトも少し変わっています。
Pythonista UIボタン②
Table Viewの追加
▼TableViewはテーブルのようにリストを表示するオブジェクトです。

▼プログラムを実行し、複数項目から1つ選択することができます。

▼選択した項目のインデックスは’sender.selected_row’で取得でき、sender.items[sender.selected_row]で項目のテキストを取得することができます。
ここで今までと違う書き方で戸惑う方もいらっしゃると思います。今までは’sender.superview[‘オブジェクト名’]’としてインスタンスを取得していましたが、TableViewではそのような書き方をすることはできません。先に変数として’label1 = v[‘label1‘]と取得しておく必要があります。理由に関しては画像下のポイントを参照。

TableViewにはActionを設定することができますが、実際にAciton属性を所有しているのはTableViewではなく’ListDataSource’というものです。
つまりAcitonで渡されている’sender’はListDataSourceクラスのインスタンスなので今まで使っていた’superview’は使えません。
したがって前もってUI部品のオブジェクトを取得しておく必要があるわけです。
項目の追加と削除
▼TableViewの項目の追加と削除の関数を先に示します。項目を追加するときには’tableview.data_source.items.append(‘項目名’)’削除するときには’del tableview.data_source.items[項目のインデックス]’とします。項目名や項目のインデックスは項目をタップした際に取得しておきます。

▼まずテキストフィールドに追加する項目名を入力しAddボタンを押します。

▼リストにRow 4が追加されました。

▼次にRow 4を選択してRemoveボタンを押します。

▼Row 4を削除することができました。

アクセサリーの表示
▼リストにアクセサリーを表示することができます。
その際にtableview1 = v[‘tableview1’]としてTableViewを取得してから
tableview1 = [{‘title’:’タイトル’,’accessory_type’:’アクセサリータイプ’}]と指定します。アクセサリータイプには{checkmark,detail_button,disclosure_indicator,detail_disclosure_button}などがあります。

▼このように項目の右端にアクセサリーを表示することができました。

▼TableViewには項目タップ時のActionとアクセサリータップ時のAccessory_Acitonが2つあるので、別々のActionを設定することができます。

複数項目の選択
▼’tableview.allows_multiple_selection = True’とすることで複数選択をすることが可能になります。Acitonは選択された項目名を複数表示するような関数としています。

▼項目を2つ選択すると選択した項目名がラベルに表示されました。

Navigation Viewの追加
▼Navigation Viewというのはいくつかの画面を切り替えるのに用いるオブジェクトで、ほかの画面に進んだり元の画面に戻ったりすることができます。

▼Navigation Viewも前もって’nav1 = v[‘navigationview1’]として’インスタンスを取得しておきます。vw=ui.View(name=‘タイトル名’)でViewを生成し、nav1.push_view(vw)でNavigation ViewにUI部品を追加することができます。

▼生成したViewにはBackボタンがあり前のViewに戻ることができます。(BackボタンはViewにUI部品を追加することで表示されます。)


まとめ
今までに紹介してきた'.pyui'によるボタンやViewなどのオブジェクトは静的コンテンツを作るのに適しています。
次回は、サンプルとして電卓を作ります。
ゲームのような動的コンテンツを作るには別の方法を用います。それはまた今度。