初心者向け学習方法一覧はこちら
この記事ではPythonのモジュール「Tkinter」を使用してGUIを作成し、簡単なアプリを作る方法をご紹介します!
まだPythonの環境構築ができていない方は環境設定方法の紹介記事も作成しているのでこちらもどうぞ!
PythonのTkinterとは?
まずPythonのTkinterとは「Toolkit interface」のことでPythonでGUIアプリを作成する際のツールが入ったモジュールです。
公式ドキュメントは以下のリンクとなっています。
Tkinterを使用することで簡単にGUIアプリを作成することができます。
GUIというのは「Graphical User Interface」のことで視覚的に操作できるアプリケーションのことです。
具体的なイメージだとスマホの指で操作するアプリはGUIアプリですね!
Tkinterの使い方を解説!
それではTkinterの使い方を解説していきます。
Tkinterは標準モジュールでして、Pythonをダウンロードした時から自分のパソコンで使用できる状態になっています!
まずTkinterを使用する際にはインポートする必要があります。
インポートは以下のように行います。
from tkinter import *
これでTkinterのインポートは完了です!
GUIを作成する際に最低限必要なコードを一覧表にまとめました!
主要オプション
機能 | コード |
テキストボックス | Text(インスタンス名) |
チェックリスト | Checkbutton(インスタンス名, text=”入力したい文字”) |
ボタン | Button(インスタンス名,txt=”入力したい文字”,command=起動したい関数名) |
文字 | Label(txt="入力したい文字”) |
配置 | 配置したいもの.place(x=,y=) |
初期値 | 配置したいもの.insert(0,初期値) |
実際にコードを書いてみましょう!
それでは例として下の画像のような文字数チェッカーアプリを作ってみたいと思います!
文字を入力するとその文字数をカウントしてくれるGUIアプリです。
それでは実際にコードを作っていきましょう!
内容が複雑なため部分ごとに紹介していますが最後に使用したコードの全体も記載しています。
まず必要なパッケージをコードに読み込みます。
from tkinter import *
「from tkinter import *」というのはtkinterからすべてインポートしてくださいという意味です。
「*」はワイルドカードといって全てを意味する正規表現です。
次にテキストの文字数をカウントする関数を作成します。
使用するのはPythonの標準メソッドのlen関数とreplace関数です。
def count_text(event):
s = main_text.get(1.0,END)
s_ = len(s)
t = main_text.get(1.0,END).replace(' ', '').replace('\n', '').replace('\t', '')
t_ = len(t)
#更新した文字数を表示するように書き換えます
info_label.config(text=f'{s_}文字(空白抜きの場合:{t_})')
正規表現で空白は「\u」、タブキーで入力されたインデントは「\t」、改行は「\n」です。
入力されたものを値として入手するには「.get()」メソッドで入手します。
次にTkinterの土台となる部分(インスタンス)を作成します。
root = Tk()
root.title("text counyter")#Appの名前
Tkinterの場合はインスタンス名は「root」とすることが多いです。
文字を入力する部分の作成します。
主要オプションで紹介した「Text」メソッドを使用して実装します。
main_text = Text(root)
main_text.bind("<Key>",count_text)#文字を入力されたら関数を起動するように設定します
main_text.pack()
最後に書いている「.pack()」というのは表示画面すべてに表示するメソッドです。
これにより座標や大きさを入力する手間を省くことができます。
次に文字数を表示する部分を作成します。
これは利用する人が入力する必要はないため「Label」メソッドを使用して実装します。
info_label = Label(root)
info_label.pack()
基本的には文字を入力する部分と同じです。
最後に仕上げとして勝手にアプリが終了しないように固定します
root.mainloop()
最後に完成した全体のコードは以下の通りです。
from tkinter import *
import re
def count_text(event):#文字を入力される度に起動する文字数をカウントする関数です
#空白込の文字数をlen関数を使用して数えます
s = main_text.get(1.0,END)
s_ = len(s)
#空白無の文字数をlen関数と正規表現を使用して数えます
t = main_text.get(1.0,END).replace(' ', '').replace('\n', '').replace('\t', '')
t_ = len(t)
#更新した文字数を表示するように書き換えます
info_label.config(text=f'{s_}文字(空白抜きの場合:{t_})')
#Tkinterの土台を作成します
root = Tk()
root.title("text counyter")#Appの名前です
#文字を入力する部分を作成します
main_text = Text(root)
main_text.bind("<Key>",count_text)#文字を入力されたら関数を起動するように設定します
main_text.pack()
#文字数を表示する部分を作成します。
info_label = Label(root)
info_label.pack()
#ループ処理をしてAppを固定します
root.mainloop()
もし特定のキーを入力された時に値を更新したい場合はこのようにします。
例ではEnterキーの場合です。
main_text.bind("<Enter>",count_text)#<Key>をEnterに変更
まとめ
さらによいアプリを作成するためには
さらに手の込んだアプリを作りたい場合はPythonのフレームワークであるFlaskやDjangoの使用も検討するのが良いと思います!
Flaskの記事についても紹介しているのでこちらもどうぞ!
プログラミングスクールの選び方
転職を検討中の方向け
フリーランス・副業で活躍したい方向け
教養・キャリアアップしたい方向け
給付金について詳しく知りたい方向け