IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

ゼロから歩くPythonの道

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第23回 TkinterのEntryに入力された値を取得しよう(getメソッド) (菱沼佑香) 2021年7月

こんにちは、吉政創成 菱沼です。

今回も「いちばんやさしいPython入門教室(大澤 文孝氏著) 」を片手に勉強していきます。

さて、前回はHit&Blowの画面に配置したボタンを押すと出てくるメッセージボックス(確認や警告などの画面)をtkinterのmessageboxというパッケージを使って表示させる方法について学びました。

今回はボタンを押した後に実行される動作について学んでみたいと思います。

前回のおさらい

tkinterで画面を作成したあと、実際にプログラムと関連付けをしていかなくてはいけません。前回はその前準備として、ボタンを押した後にメッセージボックス(画像)を表示させるところまで行いました。

fig01

このようなメッセージボックスを表示させるなど、クリックされたときに実行される関数はdefを使用します。赤枠の部分が作った関数です。そして赤線を引いてあるところがボタンに動作(関数)を結びつけるためのものです。

fig02

入力された値を取得するにはgetを使う。

そろそろプログラムと画面を結びつけていく作業に移るようです。

といっても、画面で入力された値をプログラムに渡してあげないとプログラムは動きませんので、まずはプログラムに渡すために、入力された値を取得する方法を学ぶようです。

―――――――――引用―――――――――

P.171

はじめに知らなければいけないのは、ウィンドウに配置したテキスト入力欄、つまりエントリーの部分に入力されたテキストを取得する方法です。

入力されたテキストは、getメソッドを使うと取得できます。ここまでのプログラムでは、次のようにテキスト入力欄を「editbox1」という変数に代入しています。

(中略)

ですから次のようにeditbox1に対してgetメソッドを実行すると、この入力欄に入力されたテキストを取得できます。

>>>editbox1.get()

――――――――――――――――――――

ということで、前回学んだメッセージボックスに、Entry(入力ボックス)から取得した値を表示させることからはじめるようです。おさらいの部分で出したプログラムの画像内、赤枠で囲った部分を以下のように変更(赤字の追記)します。(editbox1に対して追加された部分はありません。)

>>>def ButtonClick():

>>>    b = editbox1.get

>>>    tmsg.showinfo(“入力されたテキスト”, b)

この部分を変更して実行すると次のような画面になります。

fig03

入力した値がちゃんと引き継がれていますね。

getメソッドとはなんだ。

ところで、テキストの引用で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という辞書を作り、子供とその親をワンセットにして要素にして登録したものです。

fig04

この時、それぞれの要素のkeyとvalueは

fig05

となります。(上がkey、下がvalue)

ということでここまでがリスト、タプル、辞書のざっくりイメージです。

  • getメソッドの役割と使い方

さて、ここで本題であるgetメソッドに戻ります。

先ほど引用した公式ドキュメントに「key が辞書にあれば key に対する値を、そうでなければ default を返します。」と書かれていましたよね。

getはこの辞書から値を取り出してあげることができるということのようです。

さて、次の画像は、先ほど作成した辞書を使い、この子の親は誰かを答えてもらうものです。(いわゆる親の顔が見てみたいわぁ。ああ、あの人ね。的な。)

この時にgetを使います。(print(sazaedict.get(“子供の名前”)と書きました。)

そして、実際にそれを実行するとこの通り。

fig06

Key(子供の名前)に対して、value(親の名前)が辞書の通り返されました。

ところで、サザエさんはもう結婚していますし、大人なので辞書に入れていませんでした。そのため、特に何も設定しなければ「None」とでてきますが、それはなんだかさみしい。

そこで、辞書の中にない時に返す値を設定する方法ですが、それが公式ドキュメントの引用で出てきた「get(key[, default])」です。

まず上の行が何も設定しなかった場合。その下がdefaultを設定した場合です。

fig07

このように表示されます。

ということで、getは辞書からkeyをもとにvalue(値)を取り出す(取得する)ものであることがわかりました。

ただ冒頭のほうのアプリ作成で「b = editbox1.get」と記述されていますが、これは文字を入力するための箱(tkinter:Entry)に入れられた値を取得するものです。editbox1はあくまでEntryなので、辞書ではありません。辞書に限らず値の取得に使用するときに使えるということでいいのかなと思いました。

それでは今回はこちらで終了です。

次回はgetメソッドで取得された値をプログラムに引き渡す部分を学習していきます。

今回もお付き合いいただきありがとうございました。

参考サイト:

辞書でキーを指定して値を取得する|Let‘s プログラミング

辞書に含まれるすべてのキーと値を取得する|Let's プログラミング

Pythonで辞書(ディクショナリ)型を使う方法【初心者向け】|TechAchademy

Pythonの辞書型を使ってみる|Qiita @hz1_d

Python リスト / タプル / 辞書 / 集合 使い分けを徹底解説|Science By Python

【Python入門】dictionary(辞書)の使い方。基本と応用|SAMURAI ENGINEER

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes