【Python】tkinterの使い方入門。計算機GUIアプリの作成に挑戦!

Pythonの応用
スポンサーリンク

初心者の独学でのプログラミング学習はとてもツライ…

プログラミングをマスターしたい!

今のIT業界はプログラミングエンジニアが不足していると言われています。
高収入の職業とも言われる分野もありますし、AI、機械学習、ディープラーニング、IOTといった注目される分野が目白押しです。

でも、いざ初心者がプログラミングをマスターしようとすると…

  • 本を読んだりネットの記事で自力で勉強しているけど限界を感じる
  • プログラミングスクールに定期的に通うのは面倒だ
  • 地方に住んでると家の近くにプログラミングスクールなんてない
  • どのプログラミング言語を学べばいいのか悩む
  • 実際の就職や転職にプログラミングが活かせるのか心配だ

など、プログラミングを自分で勉強しようとすると悩みが尽きません。

プログラミングに詳しい友人に教えてもらおうと思っても、そんな友人なんて滅多にいません。いたとしても細かく教えてくれるほど時間に余裕がある人はいないでしょう。

そんな独学でプログラミングをマスターするのに限界を感じてる方に、オンラインプログラミングスクールをがおすすめです。

おすすめのオンラインスクールはこちら

ここでは、tkinterのパッケージを使ってGUIアプリを作ってみましょう。

Pythonのグラフィックスに関してはturtleモジュールも扱いました。

【Python】turtleグラフィックスでお絵かき入門
Pythonにはタートルグラフィックスというものがあり、子供にプログラミングを紹介する時などによく利用されます。turtleモジュールをインポートして簡単に図形を描いて楽しむことができます。色々と描いたり、コードを変更してみるのも有益です。

これはお絵かきの入門的なものでした。

ここで使うtkinterパッケージは、ほとんどのUnixプラットフォームやWindows上で利用できるTk GUI ツールキットをPythonで利用するためのインタフェースです。(Tk自体は Pythonの一部ではありません)

ここではもう少し複雑なGUIを使った操作をtkinterを使ってやってみたいと思います。

スポンサーリンク

tkinterの簡単な Hello World プログラム

tkinterを説明して行くにはどこから始めるか難しいところですが、簡単なコードを見てどういうものが理解していきます。細かい部分は実践して行く中でドキュメントなどで確認して行けば良いでしょう。

tkinterのドキュメントに「簡単な Hello World プログラム」というものが例として示されています。

tkinter --- Tcl/Tk の Python インタフェース — Python 3.8.0 ドキュメント

そのコードは以下のとおり。

これを実行するとこんなアプリが立ち上がります。

とても小さなものが表示されるので、はっきり言って「なんじゃこりゃ?」なアプリです。これが表示されてclick meのところをクリックするとターミナルにメッセージが表示されます。

3回クリックしてみました。

QUITをクリックするとアプリが終了します、単にそれだけのアプリです。

簡単にコードを解説してみましょう。

tkinterでアプリを作る時のパターンとして、最初と最後はこういう形というのが使い方の基本と考えておけばいいでしょう。

tkinterをtkとしてインポート。Application()で初期化と各種の設定をします。tk.Tk()をオブジェクトにしてrootとし、Application()にmasterとしてrootを渡し、これをmainloop()としてアプリを実行(表示)するという流れです。

Application()クラス内のメソッドを順に見ていきます。

初期化メソッドの中にpack()がありますが、これでアプリのボタンなどの配置を制御します。create_widgets()は別に定義してアプリの中身を作ります。

次のcreate_widgets()を見ていきます。

実行したアプリの表示と見比べながら見ていくといいと思います。

まず、hi_thereとしてメッセージ表示ボタンを作っていきます。まずtk.Button()でボタンを生成します。[“text”]として、アプリに表示する文を作り、[“command”]でsay_hiメソッドを実行。これはあとで定義します。pack()でこの部分をどう表示するか調整します。ここでは”top”ということで、上側に表示です。

次はquitでアプリを終了させるボタンを作ります。tk.Button()でボタンを生成して、表示textを”QUIT”、文字の色をred(赤)にして、commandをroot.destroyでアプリを終了させます。pack()でこのボタンの位置を”bottom”にしています。

あとは先ほど触れたsay_hi()の定義です。

メッセージを表示するコードになっています。

以上が、tkinterのドキュメントに簡単な Hello World プログラムのコードの流れです。

ちょっとアプリがショボすぎですね。やっぱり何か作ってみましょう。やっぱり計算機がプログラムの練習の定番だと思いますので、簡単な計算機をtkinterで作ってみようと思います。

スポンサーリンク

tkinterで作る計算機の完成イメージ

では、tkinterを使ってGUIアプリを作ってみましょう。tkinterの使い方やプログラミングの練習になると言われている計算機を作ってみましょう。

まあ、細かいところまでは作りこみませんので簡単な電卓ということになります。

こんな計算機を作ることにします。

この電卓の配置は、Macの電卓の配置を参考にしています。ただし、Macの計算機には[+/-]のボタンがありますが、プログラミングが複雑になってくるので、ここでは簡単に1文字削除の機能などにしています。

ボタンの配置にrowとcolumnを考える必要があるので、次のように位置を確認しておきます。

この位置関係を材料にコードを書いていきます。

スポンサーリンク

計算機のコードを書く

それではコードを書いていきましょう。上の完成アプリと配置イメージも見比べながら書いてみましょう。

tkinterのインポートから初期化の部分は先ほどと一緒です。pack()のかわりに、ここではボタンの位置を細かく指定するのでgeometry()を使っています。アプリのタイトルにtitle()を使って「計算機」と表示させます。

Entry()で入力数字の表示欄を作ります。justify=”right”で右寄せで表示します。

Menu()でPCのメニューバーのところに表示させるようにします。config()でメニュー項目を設定します。

create_widgets()で各種ボタンを設定。これは後ほど定義します。

次に進みます。

ここは、実際にコードを書いていくに当たっては、ここからではなく後ろの方のコードのボタンの配置などから書いていく方が流れとしてはわかり易いかもしれません。そのあたりは後のコードと見比べて考えて見てください。ここは上から説明していきます。

まず、input()ですが、ここで各数字などのボタンを押したアクションを指定します。entryの表示欄の一番最後に押したボタンの数字などをinsertします。最後にinsertすることで続けて入力したものが表示できます。

clear_all()で表示を全削除します。電卓の[AC]の部分です。delete()で0から最後まで全ての値を削除するというコードになっています。

clear_one()で1文字削除します。電卓の[C]の部分です。まず、get()で入力されたものをtxtに一旦保持しておきます。delete()で0から最後まで削除して、insertで先ほどのtxtを表示するのですが、0から最後の一個手前をtxt[:-1]と指定することで1文字を削除しています。

equals()で[=]の部分を設定します。まず入力されている文字列をget()で取得し、eval()で計算式と評価させます。eval()は、第1引数をPythonでの式として解析して評価する関数です。一緒に、計算式にならない文字列÷、×、%をreplece()で本来の演算子に置き換えています。一旦表示をdelete()で削除して、再度置き換えて計算した値をinsertで挿入して表示させます。

そして、今度はcreate_widgets()で各種表示を設定していきます。

まず、ファイルメニューです。Menu()で最初に定義したmenu_barを組み込んでいきます。add_command()で「閉じる」のラベルと、quitでアプリを終了するコマンドを設定します。add_cascade()でメニューがプルダウン表示されるようにします。

entry.grid()で入力表示欄の位置を設定しています。最初に示したrowとcolumnの位置を参考にすればやっていることがわかるでしょう。padyはy軸方向の外枠の幅です。focus_set()で入力待ちの表示がされます。

次はボタンです。Button()にそれぞれ設定していきます。textにボタンの表示するラベルを指定します。withでボタンの幅を指定し、commandにはここではlambdaを使って関数を与えています。textで与えたラベルの位置をgrid()を使ってrowとcolumnで指定しています。

あとは全てのボタンを同様に設定していけばいいですね。

[0]の部分はボタンの幅とcolumnの長さが他と違うので調整しています。[=]のところは、input()ではなく、equalsを使っています。

残りの記号の部分です。commandの部分がそれぞれ違います。

最後に、お決まりごとの部分を記述して終わりです。

この部分は最初の冒頭部分と一緒に書いて、間にコードを入力していった方がいいかもしれませんね。そうすれば、入力の途中でコードを実行してボタンの位置などの表示を確認しながら調整することができますからね。

ということで、これで簡易な計算機の完成です。

このコードを実行してみると、計算機として本当に機能するかな?

スポンサーリンク

作った計算機の全コード

最後にコード全体を示しておきます。

以上です。ちょっとボタンのコードの順番をみやすく書く工夫も必要かもしれません。

スポンサーリンク

まとめ

ここではPythonのtkinterを扱いました。

tkinterパッケージは、ほとんどのUnixプラットフォームやWindows上で利用できるTk GUI ツールキットをPythonで利用するためのインタフェースです。

これを使って簡単なアプリの確認と、簡易な電卓のアプリのコードを書いてみました。コードとアプリを対応させながら見ていくのも良いと思います。

(追記)

AnacondaのPython3.7はtkinterに不具合が生じることもあるようです。

MacのAnacondaをアンインストールする - Python3.7でTkinter等に不具合?
MacのAnacondaをアンインストールする方法を扱います。Python3.7にcondaでアップデートすると、TkinterやIDLEを起動するとMacがログアウトして使えない症状が出ました。Anacondaをアンインストールして公式サイトのPythonで代用します。

Python公式サイトのものをインストールすれば問題なくtkinterは利用できます。

自宅学習はオンラインプログラミングスクールを活用!

自宅学習にはオンラインプログラミングスクールがおすすめ!

オンラインプログラミングスクールは独学でプログラミングを学習する時のデメリットを解消する仕組みが備わっています。

気になるところは…

学習がオンラインで完結するのはもちろんですが、独学ではできない質問サポートがあるかどうか。わからないことを現役のエンジニアが質問に答えてくれるといいですよね。

受講者個人に担当のメンターがつき、マンツーマンで学習の相談に乗ってくれることも必要で、ITエンジニアの世界についても伺えたりもすると幅が広がります。

オンライン面談だけでなく、チャット機能を使って気軽に質問を投げかけることができることも大切です。

また、オリジナルプロダクトの開発とサポートがコースの中に組み込まれていて、独学ではなかなか難しい実践的なスキルの習得にもつなげたい。

プログラミングをマスターした後の実際の仕事につながる転職サポートでがあると、ITエンジニアの世界に飛び込むのに不安が解消されます。

そんな豊富なメニューが揃っているおすすめのオンラインプログラミングスクールがこちらにあります。

おすすめのオンラインプログラミングスクールはこちら

TechAcademyはおすすめのオンラインプログラミングスクール!

オンラインのプログラミングスクールでは、テックアカデミーの充実度が目を見張ります。

オンラインで受講が完結するので、自宅学習でプログラミングをマスターしたい人にはテックアカデミーがおすすめです。

メンター制度も現役のプロが対応してくれます。大学生などが対応しているスクールに比べて本気度と専門性が違います。メンター制度の無いスクールもありますし、担当では無いメンターが対応するスクールもあったりするので、相談の質が違いますね。

チャットサポートもあるので、それが無いスクールに比べて相談の気軽さの違いがあります。

プロダクト開発のサポートで実践力が養われるだけでなく、どの講座を利用しても転職サポートが受けられるのはありがたい。

用意されているコースも、初心者向けのプログラミングコースから、Python、Java、PHP、iPhoneアプリ、AndroidといったITエンジニアのベースとなる主要な言語だけでなく、AI、データサイエンス、ブロックチェーン、webアプリケーションと行った実践的なコースまで用意しています。

他にも、webデザインやUI/UXデザイン、動画編集、webディレクションやwebマーケティングといったプログラミング以外での役立つコースまであります。

このようなたくさんの選択肢から自分にあったコースを選ぶことがでるのがテックアカデミーです。

コースの期間も短期間でマスターしたり、長期の受講でじっくり取り組むコースを選ぶこともできます。

複数講座のセットコースを利用することで大幅な割引が受けらるので、お得に受講することもできます。

無料体験もありますので、プログラミング学習でオンラインスクールを考えている人はTechAcademyをぜひ利用してみてください。

テックアカデミーの公式サイトはこちら

タイトルとURLをコピーしました