pthonを学び始める一つにGUIアプリを作成したいから
という方もいるのではないでしょうか?
pythonではGUIアプリを作成するためのライブラリがいくつか用意されています
- tkinter
- kivy
- PyQt
- wxPython
- PySide
今回はGUIアプリを作成するためtkinterの使い方について解説をしていきたいと思います
インストール方法から実際のサンプルコードでGUIアプリを作成するところまで解説していきたいと思いますので、参考にしてみてください

Contents
Anacondaを使ってtkinterを使う
まずは「Anaconda-Navigator」を起動させます


もしくは「Search Packages」から「tk」の検索をする
これでAnaconda上でtkinterを使用することができるようになります
pythonのtkinterとは?
tkinterを使うことで以下のようなGUIアプリを作成することができます

私が作成しているのはGUIアプリはtkinterを使って作成しています
tkinterはpythonの標準ライブラリなので、特別な環境構築が必要ない、とされていたため、使用し始めました
tkinterを使えば確かに簡単にGUIアプリを作成することができますが、機能面での物足りなさを感じますが、クロスプラットフォームで動作可能なのはメリットでもあります
(クロスプラットフォーム:クロスプラットフォームとは、異なるプラットフォーム上で、同じ仕様のものを動かすことが出来るプログラムのこと)
tkinterのメリット1.python標準装備
tkinterの最大のメリットは、pythonで標準装備のGUIライブラリということです
標準装備なので、pythonの開発環境が入っていれば、簡単に作成することが可能です
他のGUIライブラリでは、インストールがうまくいかない場合やOSの環境によっては、操作が煩雑になることがあります
それに比べて、tkinterは標準装備のGUIライブラリなので、うまくいかないということがありません
なので、pythonを独学で学んでいる方にとっては、GUIアプリを作成するハードルがめちゃくちゃ低くなります
tkinterのメリット2.文法がシンプル
tkinterを使い始めて感じたのは、「python初心者の独学者でも簡単にGUIアプリ作れるじゃん!」ってことです
それだけtkinterを利用する上での、文法がシンプルであるということです
tkinterを使うことでpythonの言語自体の理解も深まりますし、GUIアプリも作れるし一石二鳥でした
実際に私が作成している統計ソフトは3ヶ月程度でかなり完成してきています
tkinterなら独学でも簡単にGUIアプリを作成することができるので、おすすめです
tkinterのデメリット1.機能面が乏しい
tkinterの文法はシンプルでpython独学者でも簡単にGUIアプリを作成することができますが、それゆえに、機能面の乏しさを感じることもあります
そのため、複雑なGUIアプリを作成したい場合には、あまり向いていません
tkinterのデメリット2.ウィジェットの配置などでコードが多くなりがち
GUIアプリを作成する際には、ウィジェットと呼ばれるパーツを配置していきます
tkinterではウィジェットを配置する際の種類やオプション、位置などを設定していかないといけないため、シンプルなコードが大量に発生します
そのため、シンプルなコードが乱立して、煩雑なコードになる、
という現象に見舞われます
tkinterのサンプルコードでGUIアプリを作ってみよう①
ではここからは、サンプルコードで実際にGUIアプリを作ってみましょう
今回作成するのは、テキストボックスに入力されている文字列を、ボタンがクリックされるたびにラベルに反映させる、というとても簡単なGUIアプリになります
# tkinterのインポート
import tkinter as tk
# rootメインウィンドウの設定
root = tk.Tk()
root.title("Frame")
root.geometry("300x300")
frame = tk.Frame(root)
frame.grid(row=0,column=1)
entry = tk.Entry(frame)
#StringVar変数を使う
var=tk.StringVar()
#entryに入力された値をvar(StringVar)にセットする
def btnclick():
var.set(entry.get())
#ラベルに入力する文字列はvarに入力された値
label = tk.Label(frame, textvariable=var)
#ボタンがクリックされたら「def btnclickを実行する」
button = tk.Button(frame, text='ボタン',command=btnclick)
label.grid(row=0,column=2)
entry.grid(row=1,column=2)
button.grid(row=2,column=2)
root.mainloop()
今回はtextvariableを使って、動的に変更できるようにさせています
textvariableについてはこちらの記事も参考にしてください

tkinterのサンプルコードでGUIアプリを作ってみよう②
続いて、冒頭の画像のようなGUIアプリをtkinterで作成してみましょう
import tkinter as tk
class ListboxSampleApp(tk.Frame):
def __init__(self, app):
super().__init__(app)
self.pack()
self.insert_item = tk.StringVar()
#items = tk.StringVar()
self.entry = tk.Entry(self,textvariable = self.insert_item)
self.entry.pack()
self.value_list=["aaa","bbb","ccc","ddd"]
var=tk.StringVar(value=self.value_list)
self.listbox =tk.Listbox(app, listvariable=var, height=5,selectmode="single")
self.listbox.pack()
Button1 = tk.Button(text=u'項目を追加するボタン', command=self.insertItem)
Button1.pack()
#self.listbox =tk.Listbox(app, listvariable=items, height=5,selectmode="single")
#self.listbox.pack()
button = tk.Button(app,text = "測定データを追加するボタン",fg='#ff0000',command=self.insertdata)
button.pack()
Button = tk.Button(text=u'項目を削除するボタン', width=50, command=self.deleteSelectedList)
Button.pack()
self.textbox=tk.Text()
self.textbox.pack()
def insertItem(self):
"""
Entryに入力した文字列をリストボックスの最後に登録する
"""
item = self.insert_item.get()
if item == "":
return
self.listbox.insert(tk.END,item)
def insertdata(self):
item1 = self.insert_item.get()
if item1 == "":
return
self.textbox.insert(tk.END,item1)
def input_listbox(self,event):
data=tk.StringVar(value=self.value_list)
selectIdx=self.listbox.curselection()
data.set(self.listbox.get(selectIdx))
self.textbox.insert(tk.END,data)
#listbox.bind("<<ListboxSelect>>",input_listbox)
def deleteSelectedList(self):
selectIndex=tk.ACTIVE
self.listbox.delete(selectIndex)
if __name__ == '__main__':
app = tk.Tk()
app.geometry("600x600")
app.title("Listbox Insert Sample Program")
frame = ListboxSampleApp(app)
app.mainloop()
これだけでも起動しますが、コメントアウトしている部分を作動させるにはどうしたらいいのか考えてみてください
ここを理解できると、tkinterを使ったGUIアプリの可能性がかなり広がると思います
pythonの独学でつまづかない方法?
pythonを独学で進めていく上で、
「ひとまず何かしらの書籍に目を通したい」
「webで調べても全くわからない」
という状況が何度も何度でも出てくるかと思います。
そういう時に便利なのが、kindleとテラテイルです。
Kindleはご存知の通り、電子書籍です。
Kindleには多くのpython学習本が用意されており、無料で読むことができます。(たまに有料もあります)
ひとまずどういった書籍があるのか?
もしものために、書籍に目を通しておこう
という場合には、kindleの利用がおすすめです。
おすすめプログラミングスクール
本を読んでもわからない場合には、プログラミングスクールに通うのも一つの方法です
以下がpythonを学ぶことができる、厳選したプログラミングスクールです
おすすめプログラミングスクール(無料体験あり)