【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の書き方は下記となります。
1 |
import tkinter as tk |
まずは、tkinterをインポートしてGUIの土台となるGUIの画面を表示します。
「import tkinter」でtkinterをインポートすることでtkinterのライブラリをすぐに使用することができます。
また、「as tk」とはtkinterをインポートしたあとで「tk」と いう略字を使って利用できるようにするものです。
毎回、tkinterのように書くのは面倒なのでキーワードの「as」を使って「tk」という名前で使用するようにしています。
tkinterでGUIの画面を作成するには
tkinterを使ってGUIの画面を作成するにはまず、tkinterをインスタンス化する必要があります。
sample.py
1 2 3 |
import tkinter as tk baseGround = tk.Tk() |
出力結果
tkinterをインスタンス化することで、GUIの画面を作成することができます。
そして、tkinterのインスタンス化した後に、テキストやボタンなどの部品(ウィジェット)をGUIの画面に配置していき、アプリケーションを作成していきます。
tkinterでGUIの画面を設定する方法
ここでは、tkinterでGUIの画面を設定する方法について紹介します。
画面のタイトルを設定する場合
tkinterを使ってGUIの画面のタイトルを指定する場合はtitle()メソッドを使用します。
title()メソッドのパラメータに文字列を指定することで、指定した文字列がタイトルになります。
sample.py
1 2 3 4 5 6 7 8 9 |
import tkinter as tk baseGround = tk.Tk() # メインウィンドウを作成 baseGround.title('ここがタイトルになります') # ウィンドウのタイトルを設定 baseGround.mainloop() |
出力結果
title()メソッドによってプログラムのタイトルが表示されています。
また、文の最後に「mainloop()」というコードがありますが、mainloop()とはプログラムが終了しても画面が消えないように維持するメソッドとなります。
画面のサイズを指定する場合
tkinterを使ってGUIの画面のサイズを指定する場合はgeometry()メソッドを使用します。
geometry()メソッドとは、ウィンドウの縦横のサイズを設定するメソッドです。
引数は「200×100」のように数字と数字の間にアルファベットの「x」を入れます。
指定した数字をピクセル(px)単位に換算し、ウィンドウのサイズを設定します
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 |
import tkinter as tk baseGround = tk.Tk() # メインウィンドウを作成 baseGround.geometry('800x500') # ウィンドウのサイズを設定 baseGround.title('Python-tkinter : タイトルです') # ウィンドウのタイトルを設定 baseGround.mainloop() |
出力結果
geometry()メソッドによってウィンドウのサイズを設定してプログラムのGUIの画面が表示されています。
また、mainloop()とはプログラムが終了してもGUIの画面が消えないように維持するメソッドとなります。
tkinterでGUIの画面に部品の配置場所を指定する方法
tkinterでGUIの画面にボタンやラベルなどの部品の配置場所を指定する場合はpack()、grid()、place()の3つのメソッドを使用します。
tkinterには、ボタンやチェックボックス、ラジオボタン、文字を表示するためのラベルなどが用意されており、それらのことを部品(ウィジェット)といいます。
そのため、今回は3つのメソッドを使ってGUIの画面にボタンを配置していきます。
pack()メソッドで配置場所を指定する場合
pack()とは、オブジェクトを配置するメソッドであり、「どこにおくのか」というside定数を設定してオブジェクトの位置を指定します。
また、pack()メソッドを引数なしで使用すると、上から順番に部品を配置するようになります。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('800x500') # ウィンドウのタイトルを設定 baseGround.title('Python-tkinter : タイトルです') buttonA = tk.Button( baseGround, text = 'ボタンA').pack() buttonB = tk.Button( baseGround, text = 'ボタンB').pack(side = tk.LEFT) buttonC = tk.Button( baseGround, text = 'ボタンC').pack(side = tk.RIGHT) baseGround.mainloop() |
出力結果
pack()メソッドによって上から順番に部品が配置されています。
また、パラメータにsideを使用した場合は、画面の左端や右端に部品が配置されています。
pack()メソッドはside以外にも別のパラメータを指定できますので、詳しく知りたい場合はこちらをご参考ください。
grid()メソッドで配置場所を指定する場合
grid()メソッドを使用して画面にボタンを配置すると、行(row)と列(column)を指定して部品を配置することができます。
grid()メソッドは画面を格子状に並べて配置するメソッドであり、引数にrowとcolumnを指定することで指定した行と列に部品を配置します。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import tkinter as tk baseGround = tk.Tk() # メインウィンドウを作成 baseGround.geometry('800x500') # ウィンドウのサイズを設定 baseGround.title('Python-tkinter : タイトルです') # ウィンドウのタイトルを設定 buttonA = tk.Button( baseGround, text = 'ボタンA').grid(row= 0, column=1) buttonB = tk.Button( baseGround, text = 'ボタンB').grid(row= 0, column=2) buttonC = tk.Button( baseGround, text = 'ボタンC').grid(row= 0, column=3) baseGround.mainloop() |
出力結果
glid()メソッドによって指定した行と列に部品が配置されています。
grid()メソッドはrowやcolumn以外にも別のパラメータを指定できますので、詳しく知りたい場合はこちらをご参考ください。
place()メソッドで配置場所を指定する場合
place()メソッドを使用して画面にボタンを配置すると、x座標とy座標を指定して部品を配置することができます。
place()メソッドは、部品を座標指定して配置するメソッドであり、引数にx座標とy座標を指定することで指定した座標に部品を配置します。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # ウィンドウのタイトルを設定 baseGround.title('Python-tkinter : place使用') buttonA = tk.Button( baseGround, text = 'ボタンA').place(x= 50, y=100) buttonB = tk.Button( baseGround, text = 'ボタンB').place(x= 100, y=150) buttonC = tk.Button( baseGround, text = 'ボタンC').place(x= 150, y=200) baseGround.mainloop() |
出力結果
place()メソッドによって指定したx座標とy座標に部品が配置されています。
place()メソッドはxやy以外にも別のパラメータを指定できますので、詳しく知りたい場合はこちらをご参考ください。
tkinterでGUIの画面に配置できる部品の種類
ここでは、tkinterでGUIの画面にラベルやボタン、ラジオボタン、チェックボックス、メニューなどの配置できる部品の種類について紹介していきます。
画面にラベルを配置する場合
tkinterを使って画面にラベルを配置する場合はLabel()を使用します。
Label()のパラメータにtextを指定することで、ラベルの名前を設定することができます。
また、foregroundを指定するとラベルの色を設定でき、 backgroundを指定すると、ラベルの背景色を設定することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # ウィンドウのタイトルを設定 baseGround.title('Python-tkinter : ラベルを配置') #ラベル label1 = tk.Label(text='ここにラベルを表示', foreground='orange', background='black') label1.pack() baseGround.mainloop() |
出力結果
Label()によってラベルが追加さています。
また、Label()のパラメータにforegroundやbackgroundを指定することで、ラベルの文字の色や背景色を変更しています。
画面に1行のテキストボックスを配置する場合
tkinterを使って画面に1行のテキストボックスを配置する場合はEntry()を使用します。
また、パラメータにwidthを指定することで、テキストボックスの大きさを設定することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # GUIの画面タイトル baseGround.title('テキストボックス') # ラベル label = tk.Label(text='テキストボックス') label.place(x=30, y=70) # テキストボックス txtBox = tk.Entry(width=20) txtBox.place(x=30, y=90) root.mainloop() |
出力結果
Entry()メソッドによってGUIの画面にテキストボックスが配置されています。
画面に複数行のテキストボックスを配置する場合
tkinterを使って画面に複数行のテキストボックスを配置する場合はText()を使用します。
また、パラメータにwidthを指定することで、テキストボックスの文字数、heightを指定することで文字の行数を設定することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # GUIの画面タイトル baseGround.title('複数行のテキストボックスを配置する') # 複数行のテキストボックスの作成と配置 textbox = tk.Text(width= 30, height= 15) textbox.pack() baseGround.mainloop() |
出力結果
Text()メソッドによってGUIの画面に複数行のテキストボックスが配置されています。
画面にボタンを配置する場合
tkinterを使って画面にボタンを配置する場合はButton()を使用します。
Button()のパラメータにtextを指定することで、ボタンの名前を設定することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # ウィンドウのタイトルを設定 baseGround.title('Python-tkinter : ボタン') buttonA = tk.Button( baseGround, text = 'ボタンA', foreground = 'red').pack() buttonB = tk.Button( baseGround, text = 'ボタンB', foreground = 'blue').pack() baseGround.mainloop() |
出力結果
Button()メソッドによって画面にボタンが配置されています。
今回は、textとforegroundを指定しましたが、それ以外にも指定できるパラメータはありますのでtkinterのButton()について詳しく知りたい場合はこちらをご参考ください。
画面にラジオボタンを配置する場合
tkinterを使って画面にラジオボタンを配置する場合はRadioButton()を使用します。
ラジオボタンと複数の選択肢の中から一つだけ選択するボタンであり、2つ以上は選択することはできないため、どれか1つだけ選択する場合に使用します。
RadioButton()の引数には親要素、textという表示する文字列、valueというラジオボタンを認識する値(Int型)、varibleというIntVarオブジェクトを指定します。
IntVaとはint型を保持するオブジェクトを作成し、get()メソッドで値を取得します。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # ウィンドウのタイトルを設定 baseGround.title('Python-tkinter : ラジオボタン配置') # ラジオボタンに表示する文字列 item= ['A', 'B', 'C', 'D'] # Intvarオブジェクトを作成して変数に代入 val = tk.IntVar() # ラジオボタンの作成と配置 # itemリストの要素の数だけ処理を繰り返す for i in range(len(item)): # 親要素を指定 tk.Radiobutton(baseGround, # valueの値を1にする value = i, # variableにIntVarオブジェクトを指定 variable =val, # textにリストitemのi番目の要素を指定 text = item[i] # 左寄せで配置する ).pack(anchor=tk.W) # ラジオボタンの状態を通知する関数 def choice(): # Intvarオブジェクトの値を取得 ch = val.get() #リストitemのインデックスをchに指定して要素を出力 print(item [ch] + 'を選択しました。') # ボタンの作成と配置 button = tk.Button(baseGround, text = 'OK', # クリック時にchoice()関数を呼ぶ command = choice ).pack(side = tk.LEFT) baseGround.mainloop() |
出力結果
RadioButton()によってラジオボタンが追加さています。
画面にチェックボタンを配置する場合
tkinterを使って画面にチェックボタンを配置する場合はCheckbutton()コンストラクタを使用します。
tkinterの部品には複数の選択肢の中から好きなだけ選択できるチェックボタンがあります。
そして、チェックボタンがチェックされている時にBooleanVarオブジェクトにTrueが格納され、get()メソッドでBooleanVarオブジェクトの値を調べることでチェックされている値を確認します。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import tkinter as tk # チェックボタンに表示する文字列を用意 item = ["印鑑", "口座手帳", "キャッシュカード", "住民票"] check = {} # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('800x500') # ウィンドウのタイトルを設定 baseGround.title('Python-tkinter : タイトルです') # itemリストの要素の数だけ処理を繰り返す for i in range(len(item)): # BooleanVarオブジェクトを作成しリストのcheck要素に追加 check[i] = tk.BooleanVar() # チェックボタンの作成と配置 tk.Checkbutton(baseGround, variable = check[i], text = item[i] ).pack(anchor = tk.W) # チェックボタンの状態を通知する関数 def select(): # 辞書check要素の数だけ繰り返す for i in check: if check[i].get() == True: print(item[i] + "チェックしました") # ボタンの作成と配置 button = tk.Button(baseGround, text = "必需品", # クリックした時にselect()関数を呼ぶ command = select ).pack(anchor = tk.W) baseGround.mainloop() |
出力結果
Checkbutton()コンストラクタによってチェックボタンが追加さています。
また、BooleanVarオブジェクトによってTrueが格納し、get()メソッドででBooleanVarオブジェクトの値を調べています。
画面にスピンボックスを配置する場合
tkinterを使って画面にスピンボックスを配置する場合はSpinbox()を使用します。
スピンボックスとは矢印付きのセレクトボックスであり、矢印を押すことで、項目を設定することができます。
Spinbox()のパラメータにvalueを指定することで、スピンボックスの項目を設定することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # GUIの画面タイトル baseGround.title('スピンボックスを配置する') spinbox = tk.Spinbox(baseGround, value = ('ボックス1', 'ボックス2', 'ボックス3', 'ボックス4')) spinbox.pack() baseGround.mainloop() |
出力結果
Spinbox()によってGUIの画面にスピンボックスが配置されています。
画面にメニューを配置する場合
tkinterを使って画面にメニューを配置する場合はMenu()クラスとconfigure()を使用します。
メニューはGUIアプリでは欠かせない部品であり、tkinterのMenuクラスはウィンドウの上部にメニューを配置し人の数だけメニューの項目を追加できるオブジェクトを作成します。
また、configure()メソッドとはウィジェット属性の値を設定するメソッドとなります。
configure()メソッドの引数にオプションを指定することで、Menuオブジェクトをメニューバーに配置することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import tkinter as tk baseGround = tk.Tk() # メインウィンドウを作成 baseGround.geometry('800x500') # ウィンドウのサイズを設定 baseGround.title('Python-tkinter : タイトルです') # ウィンドウのタイトルを設定 def callback(): print('プログラムを閉じる') menubar = tk.Menu(baseGround) baseGround.config(menu= menubar) file = tk.Menu(menubar) menubar.add_cascade(label= 'ファイル', menu= file) file.add_command(label= '閉じる', command= callback) edit = tk.Menu(menubar) menubar.add_cascade(label= 'エディット', menu= edit) baseGround.mainloop() |
出力結果
Menuクラスとconfigure()メソッドによってメニューが追加さています。
tkinterでGUIの画面を作成する際に覚えておきたいワザ
tkinterでGUIの画面を作成し、部品を配置する方法は分かったものの、どのようにしてアプリを作成すれば良いのかわかりません。
今までのメソッドは、GUIの画面を作成したり、部品を配置するだけなので、それだけだとラベルやボタンを置いたただのGUIの画面になります。
その為、tkinterでGUIの画面を作成する際に覚えておきたいワザを紹介します。
これを使用すると簡単なアプリケーションを作成することが可能になります。
値をラベルに表示する方法
値をラベルに表示するには、部品変数[‘text’]に表示したい値を格納します。
例えば、テキストボックスに入力した値をボタンを押すことで、ラベルに表示する動きは下記のようになります。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import tkinter as tk def btn_click(): # 入力した値を取得 text1 = input_text.get() # 入力した値をラベルに出力 label2['text'] = text1 baseGround = tk.Tk() # GUIの画面サイズ baseGround.geometry('300x200') #GUIの画面タイトル baseGround.title('入力値をラベルに表示する') # テキストボックス input_text = tk.Entry() input_text.pack() # ボタン btn = tk.Button(baseGround, text='入力値を出力', command=btn_click) btn.pack() # ラベル label1 = tk.Label(text = '入力値:') label1.pack() label2 = tk.Label() label2.pack() #表示 baseGround.mainloop() |
出力結果
get()メソッドで取得した変数を部品変数[‘text’]に格納することで入力した値をラベルに表示しています。
その為、「テキストを出力」と入力してボタンを押すと、ラベルに「テキストを出力」が出力されています。
前の画面から別の画面に遷移する方法
前の画面から別の画面に遷移するには新しいGUIの画面を作成する必要がある為、tkinterを再びインスタンス化します。
例えば、ボタンを押した時に、新しいGUIの画面を作成するコードは下記のようになります。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import tkinter as tk def btn_click(): #最初のGUIの画面に戻る def return_view(): baseGround_new_csv.destroy() baseGround_new_csv = tk.Tk() # GUIの画面サイズ baseGround_new_csv.geometry('300x200') #GUIの画面タイトル baseGround_new_csv.title('次の画面') # ボタン btn_return = tk.Button(baseGround_new_csv, text='前のGUIの画面に戻る', command=return_view) btn_return.pack() baseGround_new_csv.mainloop() baseGround = tk.Tk() # GUIの画面サイズ baseGround.geometry('300x200') #GUIの画面タイトル baseGround.title('最初の画面') # ボタン btn = tk.Button(baseGround, text='次の画面に移動', command=btn_click) btn.place(x=120, y=140) #表示 baseGround.mainloop() |
出力結果
新しいウィンドウをインスタンス化することで、別の画面を作成することができます。
その為、ボタンを押すと、新しい画面に遷移します。
また、destroy()を使用することで指定した画面を削除しています。
tkinterを使った簡易なGUIアプリケーション
tkinterを使った簡易なGUIアプリケーションを紹介します。
ジャンケンアプリ
tkinterで勝ち負けを判定するジャンケンアプリを作成することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
import tkinter as tk import random def btn_click(): num = random.randint(0, 2) #最初のGUIの画面に戻る def return_view(): baseGround_new_csv.destroy() baseGround_new_csv = tk.Tk() # GUIの画面サイズ baseGround_new_csv.geometry('300x200') #GUIの画面タイトル baseGround_new_csv.title('結果') if i == num: lbl_filename = tk.Label(baseGround_new_csv, text='あいこです。') elif i == 0 and num == 1 or i == 1 and num == 2 or i == 2 and num == 0: lbl_filename = tk.Label(baseGround_new_csv, text='あなたの勝ちです。') else: lbl_filename = tk.Label(baseGround_new_csv, text='あなたの負けです。') lbl_filename.pack() # ボタン btn_return = tk.Button(baseGround_new_csv, text='前のGUIの画面に戻る', command=return_view) btn_return.pack() baseGround_new_csv.mainloop() baseGround = tk.Tk() # GUIの画面サイズ baseGround.geometry('300x200') #GUIの画面タイトル baseGround.title('最初の画面') label1 = tk.Label(baseGround, text="ジャンケンをします。") label1.pack() label2 = tk.Label(baseGround, text="グーチョキパーのどれかを選択してください。") label2.pack() # ボタン btn = tk.Button(baseGround, text='OK', command=btn_click) btn.place(x=120, y=140) # ラジオボタンに表示する文字列 item= ['グー', 'チョキ', 'パー'] # Intvarオブジェクトを作成して変数に代入 val = tk.IntVar() # ラジオボタンの作成と配置 # itemリストの要素の数だけ処理を繰り返す for i in range(len(item)): # 親要素を指定 tk.Radiobutton(baseGround, # valueの値 value = i, # variableにIntVarオブジェクトを指定 variable =val, # textにリストitemのi番目の要素を指定 text = item[i] # 左寄せで配置する ).pack() #表示 baseGround.mainloop() |
出力結果
BMI計算アプリ
tkinterで身長と体重を入力してのBMI値がわかるBMI計算アプリを作成することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import tkinter as tk def btn_click(): #最初のGUIの画面に戻る def return_view(): baseGround_new_csv.destroy() baseGround_new_csv = tk.Tk() # GUIの画面サイズ baseGround_new_csv.geometry('500x300') #GUIの画面タイトル baseGround_new_csv.title('結果') height = text1.get() #stringからfloatに height_f = float(height) weight = text2.get() #stringからfloatに weight_f = float(weight) height_m = height_f / 100 result = weight_f / (height_m * height_m) result_str = str(round(result, 2)) #BMI計算 if result < 18.5: lbl_result = tk.Label(baseGround_new_csv, text='BMIは' + result_str +'で低体重(やせ型)です') elif result >= 18.5 and result < 25: lbl_result = tk.Label(baseGround_new_csv, text='BMIは' + result_str +'で普通体重です') elif result >= 25 and result < 30: lbl_result = tk.Label(baseGround_new_csv, text='BMIは' + result_str +'で肥満(1度)です') elif result >= 30 and result < 35: lbl_result = tk.Label(baseGround_new_csv, text='BMIは' + result_str +'で肥満(2度)です') elif result >= 35 and result < 40: lbl_result = tk.Label(baseGround_new_csv, text='BMIは' + result_str +'で肥満(3度)です') elif result >= 40: lbl_result = tk.Label(baseGround_new_csv, text='BMIは' + result_str +'で肥満(4度)です') else: lbl_result = tk.Label(baseGround_new_csv, text='エラーです。') lbl_result.pack() # ボタン btn_return = tk.Button(baseGround_new_csv, text='前のGUIの画面に戻る', command=return_view) btn_return.pack() baseGround_new_csv.mainloop() baseGround = tk.Tk() # GUIの画面サイズ baseGround.geometry('500x300') #GUIの画面タイトル baseGround.title('BMI計算') label1 = tk.Label(baseGround, text="BMIの計算") label1.pack() label2 = tk.Label(baseGround, text="身長(cm)") label2.pack() text1 = tk.Entry(width=30) text1.pack() label3 = tk.Label(baseGround, text="体重(kg)") label3.pack() text2 = tk.Entry(width=30) text2.pack() # ボタン btn = tk.Button(baseGround, text='OK', command=btn_click) btn.pack() #表示 baseGround.mainloop() |
出力結果
電卓アプリ
tkinterで入力した数字を計算する電卓アプリを作成することができます。
このページでは紹介しませんが別のページで紹介していますのでtkinterで簡易な電卓アプリを作成する方法についてはこちらをご参考ください。
割り勘アプリ
tkinterで入力した金額を人数によって一人当たりの金額を計算する割り勘アプリを作成することができます。
このページでは紹介しませんが別のページで紹介していますのでtkinterで簡易な割り勘アプリを作成する方法についてはこちらをご参考ください。
APIを使用したアプリ
tkinterでAPIを使用したアプリを作成することができます。
例えば、Tkinterで作成したGUIでWordPressの記事を投稿できるようなアプリを作成することができます。
*参考:Sossyの助太刀ブログの【Python】tkinterで簡易なGUIアプリを作成!より
今回のポイント
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の画面を作成する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。