Python

【Pythonista3】PythonでiOSアプリ開発#3[UIボタン②]

2020年3月3日

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とListDataSource

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などのオブジェクトは静的コンテンツを作るのに適しています。

次回は、サンプルとして電卓を作ります。

合わせて読みたい

ゲームのような動的コンテンツを作るには別の方法を用います。それはまた今度。

よく読まれている記事

1

DeepFaceLab 2.0とは DeepFaceLab 2.0は機械学習を利用して動画の顔を入れ替えるツールです。 以前にDeepFaceLab 1.0を記事としてアップしていましたが、2.0は以 ...

2

自作PCで、多くのパーツをCorsair製品で揃えたので、iCUEでライティング制御していきました。 私のPCでは、表示されている4つのパーツが制御されています。ここで、HX750i電源ユニットは、L ...

3

コンピュータは有限桁の数値しか扱う事はできないので、桁数の多い場合や無限小数の場合は四捨五入され切り捨てられます。なので実際の数値とは多少の誤差が生じますが、これを丸め誤差といいます。 なので、コンピ ...

-Python