【Python】tkinterで簡易なGUIアプリを作成!

エンジニアに特化した転職エージェント!

・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方

それなら、キッカケエージェントにご相談!

キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!

また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!

転職エージェントに迷っている方、まずは無料でキャリア相談から!




(この記事は2024年01月22日に投稿されました。)

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

tkinterとは、GUIアプリを作るためのPyhtonの標準ライブラリとなります。

標準ライブラリであるため、Pythonをインストールすることで誰でも使用することができます。

そして、ラベルやボタンと呼ばれる部品を設置し、それらに対して処理を行うことで「電卓」のようなローカルアプリを作成することができます。

また、APIやDBと接続することで本格的なGUIアプリを作成することもできるため、もしPythonでGUIアプリを作成する場合はtkinerを使用しましょう。

今回はPythonのtkinterで簡易なGUIアプリを作成する方法について紹介していきます。

この記事はこんな方におすすめ

簡単なGUIアプリを作成したい場合

簡単なGUIツールを作成したい場合

tkinterとは

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

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

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

tkinterパッケージ(“Tkインターフェース”)は、Tcl/TkGUIツールキットに対する標準のPythonインターフェースです。

TkとtkinterはmacOSを含むほとんどのUnixプラットフォームの他、 Windowsシステム上でも利用できます。

引用:Tcl/Tk の Python インターフェース

どのプラットフォームに対応されているため、利便性はとても高いです。

tkinterで簡易なGUIアプリ作成するには

tkinterで簡易なGUIアプリを作成するには下記のような手順となります。

また、今回はPythonのインストールを行っている前提とします。

1
tkinterをインポートする
tkinterモジュールをインポートします。
2
tkinterをインスタンス化する
インポートしたtkinterをこーどでしようできるようにインスタンス化します。
3
インスタンス化したtkinterに部品を設置する
インスタンス化したtkinterに対して部品を設置していきます。
4
処理終了時にmainloop()を呼び出す
インスタンス化したtkinterに対して部品を設置していきます。

tkinterをインポートする

まずは、Ptkinterをインポートします。

tkinterは、Pythonで準備されている標準モジュールであるため、下記のように記述することでインポートが可能となります。

import tkinter」でtkinterをインポートすることでtkinterのライブラリをすぐに使用することができます。

また、「as tk」とはtkinterをインポートしたあとで「tk」と いう略字を使って利用できるようにするものです。

毎回、tkinterのように書くのは面倒なのでキーワードの「as」を使って「tk」という名前で使用するようにしています。

tkinterをインスタンス化する

インポートが完了しましたら、次はtkinterのインスタンス化を行います。

インポートしたコードの下に下記のコードを追記します。

変数の値に「tk.Tk()」とすることで、tkinterをインスタンス化します。

tkinterをインスタンス化することでtkinterを使用することが可能になります。

Sossy

インポートしただけでは「ファイル内でtkinterを使用できますよ。」というお知らせになるため、インスタンス化して実体化する必要があります。

インスタンス化したtkinterに部品を設置する

インスタンス化が完了しましたら、インスタンス化したtkinterに部品を設置していきます。

インスタンス化したコードの下に下記のコードを追記します。

ここでいう部品とはGUI画面に配置するためのラベルやボタンなどになります。

ラベルやボタンなどの部品をGUIに設置していくことで、アプリケーションを作成していきます。

mainloop()を追記して今までの処理をループする

インスタンス化したtkinterに部品を設置できたら、mainloop()を追記して今までの処理をループします。

部品を設置したコードの下に下記のコードを追記します。

そもそも、mainloop()とは「ループ」処理であり、プログラムが終了しても画面が消えないように維持するためのtkinterの関数になります。

mainloopが記述されていない場合、tkinterでGUIアプリを作成しても起動後に一瞬で消えてしまいます。

つまり、mainloopのおかげでGUIアプリの画面が表示したままとなり、アプリが実行できるということです。

tkinterでGUIの基本設定を変更する場合

ここではtkinterでGUIの基本設定を変更する方法についてご紹介します。

  1. GUIのウィンドウタイトルを変更する場合
  2. GUIのウィンドウサイズを変更する場合
  3. GUIのウィンドウメニューを変更する場合

GUIのウィンドウタイトルを変更する場合

GUIのウィンドウタイトルを変更する場合はspan class= “keiko_red”>title()を使用します。

title()とは、画面のタイトルを指定するtkinterの関数になります。

title()の引数に文字列を指定することで、タイトル名を変更することができます。

● main.py

実行結果

tkinterのtitle()でGUIウィンドウタイトルを変更した結果

tkinerのtitle()でGUIのウィンドウタイトルを変更しています。

そのため、GUIのタイトルが「tkinterでGUIを作成」に変更されています。

GUIのウィンドウサイズを変更する場合

GUIのウィンドウサイズを変更するにはgeometry()を使用します。

geometry()とは、ウィンドウサイズを設定するtkinterの関数になります。

geometry()の引数に「横 x 縦」のピクセル(px)を指定することで、ウィンドウのサイズを設定することができます。

● main.py

実行結果

tkinterのgeometry()でGUIのウィンドウサイズを変更した結果

geometry()でGUIのウィンドウサイズを変更しています。

そのため、ウィンドウの縦が「580ピクセル」、横が「1000ピクセル」になって表示されています。

GUIのウィンドウメニューを変更する場合

GUIのウィンドウメニューを変更する場合はMenu()configure()を使用します。

Menu()とはウィンドウの上部にメニューを配置し人の数だけメニューの項目を追加できるオブジェクトを作成するクラスとなります。

また、configure()とはウィジェット属性の値を設定する関数となります。

つまり、Menu()クラスをインスタンス化し、それを引数としてconfigure()を使用することで、Menuオブジェクトをメニューバーに配置することができます。

● main.py

実行結果

tkinterのMenu()とconfigure()でGUIのウィンドウメニューを設置した結果

Menu()とconfigure()でGUIのウィンドウメニューを変更しています。

そのため、ウィンドウの縦が「580ピクセル」、横が「1000ピクセル」になって表示されています。

tkinterでGUIに設置できる部品の種類

ここでは、tkinterでGUIに設置できる部品の種類についてご紹介します。

今回ご紹介するのは下記の8部品になります。

  1. ラベルを設置する場合
  2. テキストエリアを設置する場合
  3. テキストボックスを設置する場合
  4. ボタンを設置する場合
  5. ラジオボタンを配置する場合
  6. チェックボタンを配置する場合
  7. スピンボックスを配置する場合
  8. キャンバスを配置する場合
  9. リストボックスを配置する場合

ラベルを設置する場合

tkinterのGUIにラベルを設置するにはLabel()を使用します。

Label()とは、部品であるラベルを作成するtkinerのクラスになります。

そのため、プロパティを指定して使用することで、GUIにラベルをカスタマイズして設置することができます。

● main.py

実行結果

Label()でGUIにラベルを設置した結果

Label()でtkinterの部品であるラベルを作成しています。

そのため、「Label()でラベルを設置」と書かれたラベルが表示されています。

テキストエリアを設置する場合

tkinterのGUIにテキストエリアを設置する場合はEntry()を使用します。

Entry()とは部品であるテキストエリアを作成するtkinerのクラスになります。

そのため、プロパティを指定することで、テキストエリアをカスタマイズすることができます。

● main.py

実行結果

tkinterのEntry()でGUIにテキストエリアを設置した結果

Entry()でtkinterの部品であるテキストエリアを作成しています。

そのため、「Entry()でテキストエリアを設置」という文字列が入力されています。

テキストボックスを設置する場合

tkinterのGUIにテキストボックスを設置する場合はText()を使用します。

Text()とはテキストボックス(複数行)を作成するtkinerのクラスになります。

プロパティを指定して呼び出すことで、テキストボックス(複数行)をカスタマイズすることができます。

● main.py

実行結果

tkinterのText()でGUIにテキストボックスを設置した結果

Text()でtkinterの部品であるテキストボックスを作成しています。

そのため、入力

ボタンを設置する場合

tkinterのGUIにボタンを設置する場合はButton()を使用します。

Button()は、部品であるボタンを作成するためのtkinterのクラスになります。

プロパティを指定して呼び出すことで、ボタンをカスタマイズして作成することができます。

● main.py

実行結果

tkinterのButton()でGUIにボタンを設置した結果

Button()でtkinterの部品であるボタンを作成しています。

そのため、「ボタンA」、「ボタンB」と書かれたボタンが画面に表示されています。

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

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

Radiobutton()は、部品であるラジオボタンを作成するためのtkinterのクラスになります。

そもそも、ラジオボタンとは複数の選択肢の中から1つだけ選択するボタンとなります。

プロパティを指定して呼び出すことで、ラジオボタンをカスタマイズして作成することができます。

● main.py

実行結果

tkinterのRadiobutton()でGUIにラジオボタンを設置した結果

Radiobutton()でtkinterの部品であるラジオボタンを作成しています。

そのため、「Python」、「Java」、「C#」、「JavaScript」の項目がラジオボタンとして表示されています。

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

tkinterのGUIにチェックボタンを配置する場合はCheckbutton()を使用します。

Checkbutton()とはチェックボックスを作成するtkinterのクラスになります。

そもそもチェックボックスとは複数の選択肢の中から好きなだけ選択できるボタンとなります。

プロパティを指定して呼び出すことで、チェックボタンをカスタマイズして作成することができます。

● main.py

実行結果

tkinterのCheckbox()でGUIにチェックボックスを設置した結果

Checkbox()でtkinterの部品であるチェックボックスを作成しています。

そのため、「Python」、「Java」、「C#」、「PHP」、「JavaScript」の項目がチェックボックスとして表示されています。

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

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

Spinbox()とは部品であるスピンボックスを作成するためのtkinterのクラスになります。

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

プロパティを指定することで、カスタマイズしてスピンボックスを作成することができます。

● main.py

実行結果

tkinterのSpinbox()でGUIにスピンボックスを設置した結果

Spinbox()でtkinterの部品であるスピンボックスを作成しています。

そのため、「Python」、「Java」、「C#」、「PHP」、「JavaScript」の項目がセレクトボックス内に表示されています。

キャンバスを配置する場合

tkinterのGUIにキャンバスを配置する場合はCanvas()を使用します。

Canvas()とは図形を描画することができる部品を作成するためのtkinterのクラスになります。

Canvas()で枠を作成し、その中に図形を指定することで、指定した図形を画面に描画することができす。

● main.py

実行結果

tkinterのCanvas()でGUIにキャンバスを設置した結果

Canvas()でtkinterの部品でキャンバスを作成しています。

そのため、キャンバス内に「赤い正方形」と「青い楕円」、「斜線」が描かれています。

リストボックスを配置する場合

tkinterでGUIにリストボックスを配置する場合はListbox()を使用します。

Listbox()とは部品であるListボックスを作成するためのtkinterのクラスになります。

そもそも、リストボックスとは複数のデータをリストの表として表示できる部品となります。

プロパティを指定することで、カスタマイズしてリストボックスを作成することができます。

● main.py

実行結果

tkinterのListbox()でGUIにリストボックスを設置した結果

Listbox()でtkinterの部品であるリストボックスを作成しています。

そのため、「Python」、「Java」、「C#」、「PHP」、「JavaScript」の項目がリストボックス内に表示されています。

tkinterでGUIに部品を設置する方法

tkinterでGUIに部品を設置する方法としては下記の3つの方法があります。

  1. pack()で部品を設置する場合
  2. grid()で部品を設置する場合
  3. place()で部品を設置する場合

そのため、ここではtkinterでGUIに部品を設置する方法についてそれぞれご紹介します。

pack()で部品を設置する場合

pack()とは、位置を指定してブロック状に部品を設置するtkinterの関数になります。

ブロック状に部品を設置することから、画面の上から順番に部品を設置することができます。

また引数を指定することで、画面の場所を指定して配置することもできます。

● main.py

実行結果

tkinerのpack()で場所を指定してGUIに部品を設置した結果

pack()でGUIに部品を設置しています。

そのため、「pack()で部品を設置」と書かれたラベルは画面の一番上に設置されています。

また、引数にsideを指定している「ボタンA」は画面の左端に、「ボタンB」は画面の右端に配置されています。

grid()で部品を設置する場合

grid()とは画面を格子状に並べて配置するtkinterの関数となります。

引数にrowとcolumnを指定することで、指定した行と列に部品を設置することができます。

● main.py

実行結果

tkinerのgrid()で場所を指定してGUIに部品を設置した結果

grid()でGUIに部品を設置しています。

そのため、ボタン1は「1行2列」の位置に、ボタン2は「2行3列」の位置に、ボタン3は「3行4列」の位置に設置されています。

place()で部品を設置する場合

place()は、部品を座標指定して設置するtkinerの関数となります。

引数にx座標とy座標を指定することで、指定した座標に部品を設置することができます。

● main.py

実行結果

tkinerのplace()で場所を指定してGUIに部品を設置した結果

place()でGUIに部品を設置しています。

そのため、ボタン1は(50, 100)の位置に、ボタン2は(100, 150)の位置に、ボタン3は(150, 200)の位置に設置されています。

tkinterで簡易なGUIアプリを作成する場合に覚えておくと便利なワザ

tkinterで部品を作成し、画面に設置するところまでは解説したものの、そこからどのようにアプリを作成するか分からないかと思います。

そのため、ここではtkinterで簡易なGUIアプリを作成する際に覚えておくと便利なワザについてご紹介します。

ボタンを押した時に処理を行う方法

tkinterでボタンを押した時に処理を行うには、Button()のプロパティであるcommandに関数を指定します。

commandに作成した関数を指定することでボタンを押したタイミングで、関数内の処理が行われるようになります。

例えば、ボタンを押したタイミングでGUIに新しい部品を設置します。

● main.py

実行結果

tkinterでボタンを押した時に処理を行った結果

Button()にcommandを指定して、ボタンを押した時に処理を行っています。

そのため、ボタンを押すと、「ラベル追加」と書かれたラベルが画面に設置されています。

入力した値を画面に表示する方法

tkinterで入力した値を画面に表示するには、get()で入力した値を取得し、部品のtextプロパティに指定します。

get()とは、指定した部品の値を取得することができるtkinterの関数になります。

get()で値を取得し、部品のtextプロパティに指定することで入力した値を画面に表示することができます。

例えば、テキストボックスの入力後にボタンを押してラベルに表示します。

● main.py

実行結果

tkinterで入力した値をGUIに表示した結果

get()で入力した値をGUIに表示しています。

そのため、今回テキストエリアで入力した「テスト中」がラベルに表示されています。

ログを表示する方法

tkinterでログを表示するには、print()を使用します。

ログを表示することで、表示する値にミスがあった場合にどの値に何が入っているのかを確認することができます。

例えば、print()を使用してボタンを押したタイミングやラジオボタンで選択した値が渡されているのかなどの確認をします。

● main.py

実行結果

tkinterでログを表示した結果(画面)

実行結果(ログ)

tkinterでログを表示した結果(ログ)

print()でログを表示しています。

そのため、ログの画面にチェックボックスを選択した項目と、ボタンを押した「ボタン起動」という文字列が表示されています。

そのため、コンソール画面にラジオボタンで選択した値と、ボタンを押した時のログが表示されています。

新たな別の画面を表示する方法

tkinterで新たな別の画面を表示するには、異なる変数でtkinterを再びインスタンス化します。

インスタンス化することでGUIが作成されるため、別のGUIに遷移するにはインスタンス化が再び必要になります。

例えば、ボタンを押した時に別のGUIに遷移するようにします。

● main.py

実行結果

tkinterで新たな画面を表示した結果

print()でログを表示しています。

そのため、ログの画面にチェックボックスを選択した項目と、ボタンを押した「ボタン起動」という文字列が表示されています。

tkinterを使った簡易なGUIアプリ

ここではtkinterを使用した簡易なGUIアプリをご紹介します。

じゃんけんアプリ

tkinterを使用することで、じゃんけんアプリを作成することができます。

● main.py

実行結果

tkinterでじゃんけんアプリを作成した結果

Tkinterでじゃんけんアプリを作成しています。

そのため、「グー」、「チョキ」、「パー」のどれかを選択してボタンを押すと、じゃんけんをした結果が表示されています。

WordPressの記事投稿アプリ

tkinterを使用することで、WordPressの記事投稿アプリを作成することができます。

こちらのアプリはRESTAPIを利用するため、WordPressのアクセスキーが必要になります。

● main.py

実行結果

tkinterでWordPressの記事投稿アプリを作成した結果

実行結果(画面)

tkinterで作成したWordPressの記事投稿アプリで記事を投稿した結果

TkinterでWordPressの記事投稿アプリを作成しています。

そのため、タイトルと内容と入力し、カテゴリを選択してボタンを押すと「投稿に成功しました。」というメッセージが表示されています。

また、WordPressを確認してみると、先程アプリで入力した記事が投稿されています。

ToDoリスト

tkinterを使用することで、ToDOリストを作成することができます。

こちらのアプリはMySQLをデータベースとして利用しているため、MySQLをインストールしておく必要があります。

● main.py

実行結果

tkinterでToDoリストのアプリを作成した結果

実行結果(DB)

tkinterでToDoリストのアプリを作成した結果(DB情報)

TkinterでToDoリストのアプリを作成しています。

そのため、内容を入力してボタンを押すと、ToDoリストのリストに追加した項目が表示されています。

また、MySQLを確認してみると、先程アプリで入力した項目がDBに追加されています。

まとめ

⚫︎ tkinterとはPythonでGUIアプリを作成するための標準ライブラリである。

⚫︎ tkinterを使ってGUIアプリを作成するには下記のような手順となる。
・tkinterをインポートする
・tkinterをインスタンス化する
・インスタンス化したtkinterに部品を設置する
・処理終了時にmainloop()を呼び出す

⚫︎ tkinterでGUIのウィンドウタイトルを設定する場合はtitle()を使用する。

⚫︎ tkinterでGUIのウィンドウサイズを設定する場合はgeometry()を使用する。

⚫︎ tkinterでGUIのウィンドウメニューを設定する場合はMenu()とconfig()を使用する。

⚫︎ tkinterでGUIにラベルを配置する場合はLabel()を使用する

⚫︎ tkinterでGUIに1行のテキストボックスを配置する場合はEntry()を使用する。

⚫︎ tkinterでGUIに複数行のテキストボックスを配置する場合はText()を使用する。

⚫︎ tkinterでGUIにボタンを配置する場合はButton()を使用する。

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

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

⚫︎ tkinterでGUIにスピンボックスを配置する場合はSpinbox()を使用する。

⚫︎ tkinterでGUIにキャンバスを配置する場合はCanvas()を使用する。

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

⚫︎ tkinterでボタンを押した時に処理を行うにはButton()のプロパティであるcommandに関数を指定する。

⚫︎ 入力した値を画面に表示するには、get()で入力した値を取得し、部品のtextプロパティに指定する。

⚫︎ tkinterで新たな別の画面を表示するには、異なる変数でtkinterを再びインスタンス化する。

⚫︎ tkinterでログを表示するにはprint()を使用する。

⚫︎ tkinterを使用することで下記のようなGUIアプリを作成することができる。
・じゃんけんアプリ(ローカルアプリ)
・WordPressの記事投稿アプリ(APIを使用したアプリ)
・ToDoリストのアプリ(DBを使用したアプリ)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です