【Python】tkinterでGUIの画面を作成する!

(*このページは2021年1月12日に更新されました。)

PythonでGUIの画面を作成するにはtkinter(ティーキンター)を使用します。

tkinterとは「Tool Kit Interface」の略で、GUI(Graphical User Interface)アプリケーションを作るためのライブラリであり、tkinterを使用すると、GUIの画面にボタンやチェックボックス、ラジオボタン、文字を表示するためのラベルなどの部品(ウィジェット)を配置できます。

その為、ボタンを押して操作する簡単なものから本格的なものまで幅広い範囲でGUIアプリケーションを作成することができます。

また、print関数を使用することで、コンソールにログを残すことができるので動いているか動いていないかの確認をとることもできますので思った通りに動かない場合はprint関数で動きを確認しましょう。

今回は、Pythonのtkinterを使ってGUIの画面を作成する方法について以下の内容で解説していきます。

⚫︎ tkinterでGUIの画面を作成するには

⚫︎ tkinterでGUIの画面を設定する方法

⚫︎ tkinterでGUIの画面に部品の配置場所を指定する方法

⚫︎ tkinterでGUIの画面に配置できる部品の種類

⚫︎ tkinterでGUIの画面を作成する際に覚えておきたいワザ

⚫︎ tkinterを使った簡易なGUIアプリケーション

tkinterとは

tkinter(ティーキンター)とは、「Tool Kit Interface」の略で、GUI(Graphical User Interface)アプリケーションを作るためのライブラリとなります。

Pythonには、GUIのアプリケーションを作るためのライブラリが標準で用意されており、tkinterはそのライブラリの一つとなります。

また、pythonの公式サイトでは下記のように記載されています。

tkinterパッケージ (“Tk インタフェース”) は、Tk GUI ツールキットに対する標準のPythonインタフェースです。
Tkと tkinterはほとんどのUnix プラットフォームの他、Windowsシステム上でも利用できます。

引用:https://docs.python.org/ja/3/library/tkinter.html

tkinterの書き方

tkinterの書き方は下記となります。

まずは、tkinterをインポートしてGUIの土台となるGUIの画面を表示します。
「import tkinter」でtkinterをインポートすることでtkinterのライブラリをすぐに使用することができます。

また、「as tk」とはtkinterをインポートしたあとで「tk」と いう略字を使って利用できるようにするものです。
毎回、tkinterのように書くのは面倒なのでキーワードの「as」を使って「tk」という名前で使用するようにしています。

tkinterでGUIの画面を作成するには

tkinterを使ってGUIの画面を作成するにはまず、tkinterをインスタンス化する必要があります。

sample.py

出力結果

tkinterをインスタンス化することで、GUIの画面を作成することができます。

そして、tkinterのインスタンス化した後に、テキストやボタンなどの部品(ウィジェット)をGUIの画面に配置していき、アプリケーションを作成していきます。

tkinterでGUIの画面を設定する方法

ここでは、tkinterでGUIの画面を設定する方法について紹介します。

画面のタイトルを設定する場合

tkinterを使ってGUIの画面のタイトルを指定する場合はtitle()メソッドを使用します。

title()メソッドのパラメータに文字列を指定することで、指定した文字列がタイトルになります。

sample.py

出力結果

title()メソッドによってプログラムのタイトルが表示されています。

また、文の最後に「mainloop()」というコードがありますが、mainloop()とはプログラムが終了しても画面が消えないように維持するメソッドとなります。

画面のサイズを指定する場合

tkinterを使ってGUIの画面のサイズを指定する場合はgeometry()メソッドを使用します。

geometry()メソッドとは、ウィンドウの縦横のサイズを設定するメソッドです。
引数は「200×100」のように数字と数字の間にアルファベットの「x」を入れます。
指定した数字をピクセル(px)単位に換算し、ウィンドウのサイズを設定します

sample.py

出力結果

geometry()メソッドによってウィンドウのサイズを設定してプログラムのGUIの画面が表示されています。

また、mainloop()とはプログラムが終了してもGUIの画面が消えないように維持するメソッドとなります。

tkinterでGUIの画面に部品の配置場所を指定する方法

tkinterでGUIの画面にボタンやラベルなどの部品の配置場所を指定する場合はpack()、grid()、place()の3つのメソッドを使用します。

tkinterには、ボタンやチェックボックス、ラジオボタン、文字を表示するためのラベルなどが用意されており、それらのことを部品(ウィジェット)といいます。
そのため、今回は3つのメソッドを使ってGUIの画面にボタンを配置していきます。

pack()メソッドで配置場所を指定する場合

pack()とは、オブジェクトを配置するメソッドであり、「どこにおくのか」というside定数を設定してオブジェクトの位置を指定します。

また、pack()メソッドを引数なしで使用すると、上から順番に部品を配置するようになります。

sample.py

出力結果

pack()メソッドによって上から順番に部品が配置されています。
また、パラメータにsideを使用した場合は、画面の左端や右端に部品が配置されています。

pack()メソッドはside以外にも別のパラメータを指定できますので、詳しく知りたい場合はこちらをご参考ください。

grid()メソッドで配置場所を指定する場合

grid()メソッドを使用して画面にボタンを配置すると、行(row)と列(column)を指定して部品を配置することができます。

grid()メソッドは画面を格子状に並べて配置するメソッドであり、引数にrowとcolumnを指定することで指定した行と列に部品を配置します。

sample.py

出力結果

glid()メソッドによって指定した行と列に部品が配置されています。

grid()メソッドはrowやcolumn以外にも別のパラメータを指定できますので、詳しく知りたい場合はこちらをご参考ください。

place()メソッドで配置場所を指定する場合

place()メソッドを使用して画面にボタンを配置すると、x座標とy座標を指定して部品を配置することができます。

place()メソッドは、部品を座標指定して配置するメソッドであり、引数にx座標とy座標を指定することで指定した座標に部品を配置します。

sample.py

出力結果

place()メソッドによって指定したx座標とy座標に部品が配置されています。

place()メソッドはxやy以外にも別のパラメータを指定できますので、詳しく知りたい場合はこちらをご参考ください。

tkinterでGUIの画面に配置できる部品の種類

ここでは、tkinterでGUIの画面にラベルやボタン、ラジオボタン、チェックボックス、メニューなどの配置できる部品の種類について紹介していきます。

画面にラベルを配置する場合

tkinterを使って画面にラベルを配置する場合はLabel()を使用します。

Label()のパラメータにtextを指定することで、ラベルの名前を設定することができます。
また、foregroundを指定するとラベルの色を設定でき、 backgroundを指定すると、ラベルの背景色を設定することができます。

sample.py

出力結果

Label()によってラベルが追加さています。
また、Label()のパラメータにforegroundやbackgroundを指定することで、ラベルの文字の色や背景色を変更しています。

画面に1行のテキストボックスを配置する場合

tkinterを使って画面に1行のテキストボックスを配置する場合はEntry()を使用します。

また、パラメータにwidthを指定することで、テキストボックスの大きさを設定することができます。

sample.py

出力結果

Entry()メソッドによってGUIの画面にテキストボックスが配置されています。

画面に複数行のテキストボックスを配置する場合

tkinterを使って画面に複数行のテキストボックスを配置する場合はText()を使用します。

また、パラメータにwidthを指定することで、テキストボックスの文字数、heightを指定することで文字の行数を設定することができます。

sample.py

出力結果

Text()メソッドによってGUIの画面に複数行のテキストボックスが配置されています。

画面にボタンを配置する場合

tkinterを使って画面にボタンを配置する場合はButton()を使用します。

Button()のパラメータにtextを指定することで、ボタンの名前を設定することができます。

sample.py

出力結果

Button()メソッドによって画面にボタンが配置されています。

今回は、textとforegroundを指定しましたが、それ以外にも指定できるパラメータはありますのでtkinterのButton()について詳しく知りたい場合はこちらをご参考ください。

画面にラジオボタンを配置する場合

tkinterを使って画面にラジオボタンを配置する場合はRadioButton()を使用します。

ラジオボタンと複数の選択肢の中から一つだけ選択するボタンであり、2つ以上は選択することはできないため、どれか1つだけ選択する場合に使用します。

RadioButton()の引数には親要素、textという表示する文字列、valueというラジオボタンを認識する値(Int型)、varibleというIntVarオブジェクトを指定します。
IntVaとはint型を保持するオブジェクトを作成し、get()メソッドで値を取得します。

sample.py

出力結果

RadioButton()によってラジオボタンが追加さています。

画面にチェックボタンを配置する場合

tkinterを使って画面にチェックボタンを配置する場合はCheckbutton()コンストラクタを使用します。

tkinterの部品には複数の選択肢の中から好きなだけ選択できるチェックボタンがあります。

そして、チェックボタンがチェックされている時にBooleanVarオブジェクトにTrueが格納され、get()メソッドでBooleanVarオブジェクトの値を調べることでチェックされている値を確認します。

sample.py

出力結果

Checkbutton()コンストラクタによってチェックボタンが追加さています。
また、BooleanVarオブジェクトによってTrueが格納し、get()メソッドででBooleanVarオブジェクトの値を調べています。

画面にスピンボックスを配置する場合

tkinterを使って画面にスピンボックスを配置する場合はSpinbox()を使用します。

スピンボックスとは矢印付きのセレクトボックスであり、矢印を押すことで、項目を設定することができます。

Spinbox()のパラメータにvalueを指定することで、スピンボックスの項目を設定することができます。

sample.py

出力結果

Spinbox()によってGUIの画面にスピンボックスが配置されています。

画面にメニューを配置する場合

tkinterを使って画面にメニューを配置する場合はMenu()クラスとconfigure()を使用します。

メニューはGUIアプリでは欠かせない部品であり、tkinterのMenuクラスはウィンドウの上部にメニューを配置し人の数だけメニューの項目を追加できるオブジェクトを作成します。

また、configure()メソッドとはウィジェット属性の値を設定するメソッドとなります。
configure()メソッドの引数にオプションを指定することで、Menuオブジェクトをメニューバーに配置することができます。

sample.py

出力結果

Menuクラスとconfigure()メソッドによってメニューが追加さています。

tkinterでGUIの画面を作成する際に覚えておきたいワザ

tkinterでGUIの画面を作成し、部品を配置する方法は分かったものの、どのようにしてアプリを作成すれば良いのかわかりません。
今までのメソッドは、GUIの画面を作成したり、部品を配置するだけなので、それだけだとラベルやボタンを置いたただのGUIの画面になります。

その為、tkinterでGUIの画面を作成する際に覚えておきたいワザを紹介します。
これを使用すると簡単なアプリケーションを作成することが可能になります。

値をラベルに表示する方法

値をラベルに表示するには、部品変数[‘text’]に表示したい値を格納します。

例えば、テキストボックスに入力した値をボタンを押すことで、ラベルに表示する動きは下記のようになります。

sample.py

出力結果

get()メソッドで取得した変数を部品変数[‘text’]に格納することで入力した値をラベルに表示しています。

その為、「テキストを出力」と入力してボタンを押すと、ラベルに「テキストを出力」が出力されています。

前の画面から別の画面に遷移する方法

前の画面から別の画面に遷移するには新しいGUIの画面を作成する必要がある為、tkinterを再びインスタンス化します。

例えば、ボタンを押した時に、新しいGUIの画面を作成するコードは下記のようになります。

sample.py

出力結果

新しいウィンドウをインスタンス化することで、別の画面を作成することができます。
その為、ボタンを押すと、新しい画面に遷移します。

また、destroy()を使用することで指定した画面を削除しています。

tkinterを使った簡易なGUIアプリケーション

tkinterを使った簡易なGUIアプリケーションを紹介します。

ジャンケンアプリ

tkinterで勝ち負けを判定するジャンケンアプリを作成することができます。

sample.py

出力結果

BMI計算アプリ

tkinterで身長と体重を入力してのBMI値がわかるBMI計算アプリを作成することができます。

sample.py

出力結果

電卓アプリ

tkinterで入力した数字を計算する電卓アプリを作成することができます。

このページでは紹介しませんが別のページで紹介していますのでtkinterで簡易な電卓アプリを作成する方法についてはこちらをご参考ください。

割り勘アプリ

tkinterで入力した金額を人数によって一人当たりの金額を計算する割り勘アプリを作成することができます。

このページでは紹介しませんが別のページで紹介していますのでtkinterで簡易な割り勘アプリを作成する方法についてはこちらをご参考ください。

今回のポイント

tkinterでGUIの画面を作成

⚫︎ tkinterとはGUIアプリケーションを作るためのライブラリである

⚫︎ tkinterを使ってGUIの画面を作成するにはtkinterをインスタンス化する

⚫︎ tkinterを使ってGUIの画面のタイトルを指定する場合はtitle()メソッドを使用する

⚫︎ tkinterを使ってGUIの画面のサイズを指定する場合はgeometry()メソッドを使用する

⚫︎ tkinterを使ってGUIの画面に部品の配置場所を指定するにはからウィジェットを配置するpack()メソッド行と列を指定してウィジェットを配置するgrid()メソッドx座標とy座標を指定してウィジェットを配置するplace()メソッドの3つがある

⚫︎ tkinterを使ってGUI画面にラベルを配置する場合はLabel()メソッドを使用する

⚫︎ tkinterを使ってGUI画面に1行のテキストボックスを配置する場合はEntry()メソッドを使用する

⚫︎ tkinterを使ってGUI画面に複数行のテキストボックスを配置する場合はText()メソッドを使用する

⚫︎ tkinterを使ってGUI画面にボタンを配置する場合はButton()メソッドを使用する

⚫︎ tkinterを使ってGUI画面にラジオボタンを配置する場合はRadioButton()を使用する

⚫︎ tkinterを使ってGUI画面にチェックボタンを配置する場合はCheckbutton()コンストラクタを使用する

⚫︎ tkinterを使ってGUI画面にスピンボックスを配置する場合はSpinbox()メソッドを使用する

⚫︎ tkinterを使ってGUI画面にメニューを配置する場合はMenu()クラスconfigure()メソッドを使用する

⚫︎ 値をラベルに表示するには部品変数[‘text’]に表示したい値を格納する

⚫︎ 別のウィンドウにGUIの画面を遷移させるには新しいGUIの画面を作成する

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し