CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
こんにちは、吉政創成 菱沼です。
今回も「いちばんやさしいPython入門教室(大澤 文孝氏著) 」を片手に勉強していきます。
さて、前回はHit&Blowの画面に配置したボタンを押すと出てくるメッセージボックス(確認や警告などの画面)をtkinterのmessageboxというパッケージを使って表示させる方法について学びました。
今回はボタンを押した後に実行される動作について学んでみたいと思います。
tkinterで画面を作成したあと、実際にプログラムと関連付けをしていかなくてはいけません。前回はその前準備として、ボタンを押した後にメッセージボックス(画像)を表示させるところまで行いました。
このようなメッセージボックスを表示させるなど、クリックされたときに実行される関数はdefを使用します。赤枠の部分が作った関数です。そして赤線を引いてあるところがボタンに動作(関数)を結びつけるためのものです。
そろそろプログラムと画面を結びつけていく作業に移るようです。
といっても、画面で入力された値をプログラムに渡してあげないとプログラムは動きませんので、まずはプログラムに渡すために、入力された値を取得する方法を学ぶようです。
―――――――――引用―――――――――
P.171
はじめに知らなければいけないのは、ウィンドウに配置したテキスト入力欄、つまりエントリーの部分に入力されたテキストを取得する方法です。
入力されたテキストは、getメソッドを使うと取得できます。ここまでのプログラムでは、次のようにテキスト入力欄を「editbox1」という変数に代入しています。
(中略)
ですから次のようにeditbox1に対してgetメソッドを実行すると、この入力欄に入力されたテキストを取得できます。
>>>editbox1.get()
――――――――――――――――――――
ということで、前回学んだメッセージボックスに、Entry(入力ボックス)から取得した値を表示させることからはじめるようです。おさらいの部分で出したプログラムの画像内、赤枠で囲った部分を以下のように変更(赤字の追記)します。(editbox1に対して追加された部分はありません。)
>>>def ButtonClick():
>>> b = editbox1.get
>>> tmsg.showinfo(“入力されたテキスト”, b)
この部分を変更して実行すると次のような画面になります。
入力した値がちゃんと引き継がれていますね。
ところで、テキストの引用でgetメソッドという言葉が出てきました。getメソッドってなに。と思ったので調べてみました。
まずはPython公式ドキュメントからの引用です。
―――――――――引用―――――――――
get(key[, default])
key が辞書にあれば key に対する値を、そうでなければ default を返します。 default が与えられなかった場合、デフォルトでは None となります。そのため、このメソッドは KeyError を送出することはありません。
https://docs.python.org/ja/3/library/stdtypes.html?highlight=dict
――――――――――――――――――――
・・・何者かの説明じゃなくて、使い方の説明でした。
とはいえヒントがいくつか。ここでkeyと辞書という言葉が出てきました。
Pythonでは配列という複数の値を一つの変数の中で管理することができ、その配列の種類にはリスト、辞書、タプルという方があるそうです。辞書といえば、以前リストについて調べたときに見た単語です。
それぞれの配列の違いをざっくりまとめてみました。
〇リスト
a = [123,456,789,100]
[](角括弧)の中に、「,(カンマ)」区切りで値を並べ、任意の変数(ここではa)に代入します。並べられる値を要素と呼び、アクセスするにはインデックスを使用します。
例:print(a[0])→123、print(a[2])→789
また、リストは値の追加・削除ができます。
例:
・追加:a.append(200) → a = [123,456,789,100,200]
・削除:a.remove(123) → a = [456,789,100]
※インデックスは0から始まりますので、このリストには0,1,2,3という番号が順番につけられます。その他、インデックスについてはこちらの記事をご参照ください。
〇タプル
a = (123,456,789,100)
()の中に、「,(カンマ)」区切りで値を並べ、任意の変数(ここではa)に代入します。リストとは違い、要素の追加・削除ができないのが特徴なようです。
リストと似ていますが、あえてタプルを使う場合は、要素が変わることがない時や、並びを変えてほしくない時などがあたるようです。詳しくは以下参考サイトをご参照ください。
参考サイト:Pythonのタプルとは一体?わかりやすく解説をしてみた|CodeCampus
〇辞書
a = {123:abc,456:def,789:ghi,100:jkl}
そして最後に辞書ですが、辞書は{}(波括弧)の中に、「,(カンマ)」区切りで値を並べ、任意の変数(ここではa)に代入します。これまでの二つと異なるのは「:(コロン)」が入っていることです。
「,」で区切られているところが一つの要素ですが、この要素の中にkeyと値(value)というワンセットで設定されています(key:value)。値にアクセスする際はこのkeyを使って行います。
また、追加・削除、検索ができるそうです。
さてここで、久しぶりに国民的有名ご一家にご登場いただきます。
これはsazaedictという辞書を作り、子供とその親をワンセットにして要素にして登録したものです。
この時、それぞれの要素のkeyとvalueは
となります。(上がkey、下がvalue)
ということでここまでがリスト、タプル、辞書のざっくりイメージです。
さて、ここで本題であるgetメソッドに戻ります。
先ほど引用した公式ドキュメントに「key が辞書にあれば key に対する値を、そうでなければ default を返します。」と書かれていましたよね。
getはこの辞書から値を取り出してあげることができるということのようです。
さて、次の画像は、先ほど作成した辞書を使い、この子の親は誰かを答えてもらうものです。(いわゆる親の顔が見てみたいわぁ。ああ、あの人ね。的な。)
この時にgetを使います。(print(sazaedict.get(“子供の名前”)と書きました。)
そして、実際にそれを実行するとこの通り。
Key(子供の名前)に対して、value(親の名前)が辞書の通り返されました。
ところで、サザエさんはもう結婚していますし、大人なので辞書に入れていませんでした。そのため、特に何も設定しなければ「None」とでてきますが、それはなんだかさみしい。
そこで、辞書の中にない時に返す値を設定する方法ですが、それが公式ドキュメントの引用で出てきた「get(key[, default])」です。
まず上の行が何も設定しなかった場合。その下がdefaultを設定した場合です。
このように表示されます。
ということで、getは辞書からkeyをもとにvalue(値)を取り出す(取得する)ものであることがわかりました。
ただ冒頭のほうのアプリ作成で「b = editbox1.get」と記述されていますが、これは文字を入力するための箱(tkinter:Entry)に入れられた値を取得するものです。editbox1はあくまでEntryなので、辞書ではありません。辞書に限らず値の取得に使用するときに使えるということでいいのかなと思いました。
それでは今回はこちらで終了です。
次回はgetメソッドで取得された値をプログラムに引き渡す部分を学習していきます。
今回もお付き合いいただきありがとうございました。
参考サイト:
辞書でキーを指定して値を取得する|Let‘s プログラミング
辞書に含まれるすべてのキーと値を取得する|Let's プログラミング
Pythonで辞書(ディクショナリ)型を使う方法【初心者向け】|TechAchademy
Python リスト / タプル / 辞書 / 集合 使い分けを徹底解説|Science By Python
【Python入門】dictionary(辞書)の使い方。基本と応用|SAMURAI ENGINEER
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes