見出し画像

[初心者向け]Pythonista3のuiでスイッチを扱う方法

こんにちは。

普段プログラミングを趣味として自分なりに楽しんでやっています。
その中で学んだ事などを備忘録として残し、僕の思いも少し付け足してnoteにまとめています。

今回はPythonista3でスイッチを扱う方法を書いています。

スイッチとは

まずスイッチとは、切り替えをするための技術や装置、部品などのことを指します。

あなたが普段生活している中でスイッチを見る場面ってかなり多いと思います。
例えば照明を点灯・点滅させるためのスイッチだったり、リモコンだったり、今あなたが使っているスマホやパソコンにもスイッチは付いています。

そしてスイッチというのは、部品という観点で簡単に言うと『ON』と『OFF』というたった2つの情報を扱うだけの部品です。

uiエディタで『スイッチを作ってみる』の巻

まずファイルを作成しましょう!
今回は『py』ファイルと『pyui』ファイルを作成します。

何を作ろうかと考えたんですが、最近流行りの(流行ってるかどうか知らないけど)ダークモードと通常モードの切り替えっぽいモノをスイッチを使って簡単に実装してみようかなと思います。

あなたが作ったアプリでダークモードと通常モードを切り替えたい!って時があるのかどうかは置いといて、スイッチの使い方を理解していただけたら応用は効くと思いますので、お付き合い下さい!

まずはファイルを作成します。
名前はなんでも良いです!
how_to_switchにしときましょうかね。

作成できたら一旦pyuiのファイルから作っていきましょう。

[how_to_switch.pyui]


ラベルを配置しています。
(nameはlabel1)


ラベルを配置しています。
属性の設定でtext部分に『ダークモード』という文字列を入れています。
(nameはlabel2)


今回の要となるスイッチです。
属性のところにValueってのがあると思うんですが、これはこのスイッチが表示された時点でONの状態なのかOFFの状態なのかを設定する部分です。
(nameはswitch1)
(後で役に立つので先にactionのところにswitch_controlという関数名を入れておきます。)

これでpyuiの方は完成なので次にpyファイルでプログラムを書いていきましょう!
完成版を書くので1つずつ見ていきましょう。

[how_to_switch.py]
ファイルを作成した状態だと以下のようになっていると思います。

import ui

#①

v = ui.load_view()

#②

v.present('sheet')

関数やクラスなどの記述は#①の場所に、それ以外のビューなどの要素を取得したりする記述は#②の場所に書いていきます!
それでは見ていきましょう!

import ui
#①
def switch_control(sender):
        #②
        if sender.value:
                label1.border_color = 'white'
                label1.text_color = 'white'
                label1.background_color = 'gray'
                label2.text_color = 'white'
                v.background_color = 'black'
        #③
        elif not sender.value:
                label1.border_color = 'black'
                label1.text_color = 'black'
                label1.background_color = 'white'
                label2.text_color = 'black'
                v.background_color = 'white'
        
v = ui.load_view()
#④
label1 = v['label1']
label2 = v['label2']

v.present('sheet')

#①
スイッチのアクションに紐付ける関数switch_controlを定義しています。
(引数にsenderを指定)

#②
if文を使ってスイッチがオンの時の条件分岐を作っています。
『もし、senderのvalue属性がTrueだったら』

・label1のボーダーカラーを白色に
・label1のテキストカラーを白色に
・label1の背景色を灰色に
・label2のテキストカラーを白色に
・v(ビュー)の背景色を黒色に

#③
elif文を使ってスイッチがOFFの時の条件分岐をかいていきます。

『それ以外にもしsenderのvalue属性がFalseだったら』

・label1のボーダーカラーを黒色に
・label1のテキストカラーを黒色に
・label1の背景色を白色に
・label2のテキストカラーを黒色に
・v(ビュー)の背景色を白色に

#④
ビューに配置されている『label1』という名前の要素を取得して、変数label1に格納しています。

ビューに配置されている『label2』という名前の要素を取得して、変数label2に格納しています。

実行してみる

完成したので実行してみましょう!
右上の実行ボタン▷で実行してみてください!

ビューが表示されましたね!
そして、ダークモードのところの右側に配置したスイッチを押してみてください!

良い感じに色が変わったと思います!
なかなか思ったよりカッコいい気がしますね。

おまけ的なやつ

一応おまけ的なやつということで『スイッチを操作出来ないようにする方法』も説明しておきます!

追加するコードはたったの1行なのでとても簡単です!
さっきのコードの#④辺りに以下のコードを追加して実行してみてください!スイッチを押しても切り替えができないようになっているはずです!

v['switch1'].enabled = False

v(ビュー)に配置されている『switch1』という名前の要素の属性の『enabled』にFalseを設定しています。(初期値はTrue)

enabledは『有効』という意味なので、Falseを設定する事でスイッチを無効にする事ができます!

例えばスイッチを切り替えて欲しくない場面でフラグなどを用意しておいて、このスイッチのenabledをFalseにするようにプログラムを組んでいればユーザーの操作によるエラーなどを回避する事ができます!

まとめ的なやつ

この記事ではPythonista3のuiでのスイッチの扱い方について、他にも使い方があるのかもしれませんが、今回は基本的な使い方ということで書かせてもらいました。

冒頭でも言いましたが、スイッチは『ON』と『OFF』の2つの情報を扱う物で、そのONかOFFかによってプログラムの動作を制御する事ができるので是非あなたのプログラムに役立ててください!

最後まで読んでいただきありがとうございました!

では、またお会いしましょう!

この記事が気に入ったらサポートをしてみませんか?