【Python応用】Pythonでアプリ作成に挑戦-Tkinter入門-

Python

ここでは、Pythonにおけるアプリ(アプリケーション)について概要を解説しています。

この記事の対象

  • Pythonでアプリ作成に挑戦したい方
  • Tkinterについて知りたい方
  • Tkinterの基本的な使用方法を知りたい方
スポンサーリンク
スポンサーリンク

アプリ(アプリケーション)とは

Pythonにおけるアプリには大きく分けると2つあります。

項目内容
Webアプリケーション(Webアプリ)Webブラウザを利用したアプリケーションのこと。
デスクトップアプリケーション(GUIアプリ)「電卓」などのアプリケーションのこと。

代表的なフレームワーク

Pythonでアプリ開発を行う際の代表的なフレームワークがあります。

項目内容
FlaskPython用のWeb開発フレームワークです。短いコードでWebアプリを実現できる特徴があります。
djangoフルスタック型のフレームワークです。必要なものが揃っており、管理サイトでのメンテナンス機能があります。
py2exe/py2app「py2exe」はPythonをWindows用の実行ファイルに変換するライブラリです。「py2app」はMacのアプリ形式に変換するものです。

Tkinter入門

Tkinterとは → 無料で簡単に始められる

Tkinter」とはPythonの標準モジュールのアプリ作成用のライブラリです。

無料でアプリ作成を体験できるので、Python初学者にも簡単に挑戦できるので、とりあえず、何か形にしたいと考えている方には、おすすめのライブラリです。

ウィンドウの作成

任意のサイズのウィンドウを作成するプログラムです。また、背景指定をしているものです。

from tkinter import *

root = Tk()

#1---titleの指定
root.title("Test")

#2---サイズの指定
root.geometry('200x200')

#3---背景の指定
root.configure(bg="#72ffff")
root.mainloop()

それでは解説していきます。

#1---titleの指定
root.title("Test")

1の部分では、タイトルの文字を指定しています。何も指定しないと「tk」になります。

#2---サイズの指定
root.geometry('200x200')

2の部分ではウィンドウのサイズを指定しています。「geometry」で指定します。

#3---背景の指定
root.configure(bg="#72ffff")
root.mainloop()

3の部分では背景の色を指定しています。色のRGBの指定方法は「4bit 16色」「8bit 256色」「16bit 4096色」になります。使用できる色はこちらを参照下さい。

結果

ラベルでの文字出力

下記は指定した文字を出力するプログラムになります。

import tkinter as tk
#1---tkinter呼び出し
root = tk.Tk()
#2---タイトル設定
root.title('test')
#3---windowサイズ指定
root.geometry('200x100')
#4---window内の文字指定
test = tk.Label(text='Hello, World!')
#5---実行
test.pack()
#6---実行の維持
root.mainloop()

それでは解説していきます。

#1---tkinter呼び出し
root = tk.Tk()

1の部分ではtkinterの呼び出しを行っています。

#2---タイトル設定
root.title('test')

2の部分ではポップアップしたときのタイトルを指定しています。

#3---windowサイズ指定
root.geometry('200x100')

3の部分ではウィンドウのサイズを指定しています。

#4---window内の文字指定
test = tk.Label(text='Hello, World!')

4の部分ではウィンドウ内に表示される文字を指定しています。

#5---実行
test.pack()

5の部分では1~4までの設定したものを実行しています。

#6---実行の維持
root.mainloop()

6の部分では5で実行したものを維持するようにしています。この「mainloop」があることでウィンドウが表示され続けることができます。

結果

上記の様なウィンドウが立ち上がれば成功です。

ボタン

ボタンをクリックしたら任意の文を出力するプログラムになります。

import tkinter as tk
#1---クリックされた処理
def set():
    print("button is clicked")
#2---tkinter呼び出し
root = tk.Tk()
#3---ウィジェットの幅と高さ指定
root.geometry("200x200")
#4---rootフレームの呼び出し
frame = tk.Frame(root)
#5---ウィジェット(フレーム)制御
frame.pack()
#6---ボタンの作成
button = tk.Button(frame, text = "Button", command = set)
#7---ウィジェット(ボタン)制御
button.pack()
#8---ループ
root.mainloop()

上記がプログラムになります。

それでは解説していきます。

#1---クリックされた処理
def set():
    print("button is clicked")

1の部分ではクリックされた時の処理としてprint文を出力するように指定しています。

#2---tkinter呼び出し
root = tk.Tk()

2の部分ではtkinterを呼び出しています。

#3---ウィジェットの幅と高さ指定
root.geometry("200x200")

3の部分では「geometry()」を用いてウィジェットの幅と高さを指定しています。

#4---rootフレームの呼び出し
frame = tk.Frame(root)

4の部分ではrootのフレームを呼び出しています。

#5---ウィジェット(フレーム)制御
frame.pack()

5の部分ではウィジェット(フレーム)のサイズや位置の制御を「pack()」で行っています。

#6---ボタンの作成
button = tk.Button(frame, text = "Button", command = set)

6の部分ではボタンの作成を行っています。「Button(master,option,…)」を用いて作成しています。

#7---ウィジェット(ボタン)制御
button.pack()

7の部分ではウィジェット(ボタン)制御を「pack()」で行っています。

#8---ループ
root.mainloop()

8の部分ではウィジェットのループを行っています。

結果

ボタンが配置されていることが分かります。これをクリックすると以下のように出力されます。

ラジオボタン

選択型のボタンを作成するプログラムになります。

import tkinter as tk
#1---tkinter呼び出し
root = tk.Tk()
#2---ウィジェットの幅と高さ指定
root.geometry("200x200")
#3---rootフレームの呼び出し
frame = tk.Frame(root)
#4---ウィジェット(フレーム)制御
frame.pack()
#5---変数定義
Var1 = tk.StringVar()
#6--- 選択ボタン1
RBttn = tk.Radiobutton(frame, text = "Select1", variable = Var1, value = 1)
RBttn.pack(padx = 5, pady = 5)
#7--- 選択ボタン2
RBttn2 = tk.Radiobutton(frame, text = "Select2", variable = Var1, value = 2)
RBttn2.pack(padx = 5, pady = 5)
#8---ループ
root.mainloop()

上記がプログラムになります。

それでは解説していきます。1~4については「ボタン」作成のプログラムを参照下さい。

#5---変数定義
Var1 = tk.StringVar()

5の部分では変数を使用する宣言を「StringVar()」で行っています。

#6--- 選択ボタン1
RBttn = tk.Radiobutton(frame, text = "Select1", variable = Var1, value = 1)
RBttn.pack(padx = 5, pady = 5)

6の部分では選択ボタンを作成しています。引数として変数を入れているのが特徴です。

#7--- 選択ボタン2
RBttn2 = tk.Radiobutton(frame, text = "Select2", variable = Var1, value = 2)
RBttn2.pack(padx = 5, pady = 5)

7の部分では6で同じ処理を行って選択ボタンの2を作成をしています。

#8---ループ
root.mainloop()

8の部分ではオブジェクトのループを行っています。

結果

選択ボタンが生成できていることが確認できました。

ポップアップ

ポップアップウィンドウの作成方法です。

from tkinter import *
import tkinter as tk
import tkinter.messagebox as mb
#1---ボタンクリック
def btn_click():
    text_A = "Button Click"
    mb.showinfo("show_info_A", text_A)

#2---画面生成
root = Tk()
root.title("Test")
root.configure()
root.geometry("640x395")
#3---ボタン作成
button = Button( text = "参照", command = btn_click)
button.pack(expand=True, anchor=tk.CENTER)

root.mainloop()

上記がプログラムになります。

#1---ボタンクリック
def btn_click():
    text_A = "Button Click"
    mb.showinfo("show_info_A", text_A)

1の部分では、ボタンをクリックした処理としてポップアップウィンドウを削除しています。

#2---画面生成
root = Tk()
root.title("Test")
root.configure()
root.geometry("640x395")

2の部分では画面を作成しています。詳細はウィンドウの作成をご参照下さい。

#3---ボタン作成
button = Button( text = "参照", command = btn_click)
button.pack(expand=True, anchor=tk.CENTER)

3の部分ではボタンを作成しています。引数にはクリックしたときの処理関数を指定しています。

結果

ボタンをクリックしたらポップアップウィンドウが立ち上がることが確認できました。

画像出力

画像の出力方法です。

from tkinter import *
import tkinter as tk
from PIL import Image, ImageTk

#1---windowの作成
root = Tk()
root.title("Test")
root.configure(bg="#fffbdb")
root.geometry('640x480')

#2---画像のinput
image = Image.open("python.png")
image = image.resize((40, 40))
image = ImageTk.PhotoImage(image)

#3---画像を乗せる土台の作成
canvas = tk.Canvas(
root, 
width=40, 
height=40
)

canvas.place(x=100, y=100)
#4---土台に画像を配置
canvas.create_image( 0, 0, image=image, tag="illust", anchor=tk.NW )

#5---ループ
root.mainloop()

上記がプログラムになります。

それでは解説していきます。1の部分については上記の「ウィンドウの作成」をご参照下さい。

#2---画像のinput
image = Image.open("python.png")
image = image.resize((40, 40))
image = ImageTk.PhotoImage(image)

2の部分では、画像の読込をしています。次に「resize」でサイズを40×40にしています。次にTkinter用に変換しています。

#3---画像を乗せる土台の作成
canvas = tk.Canvas(root, width=40, height=40)
canvas.place(x=100, y=100)

3の部分では画像を乗せるためのキャンバスを作成しています。「place」ではキャンバスの位置を指定しています。

#4---土台に画像を配置
canvas.create_image( 0, 0, image=image, tag="illust", anchor=tk.NW )

4の部分ではキャンバスの上に画像を配置しています。anchorは位置を指定しています。NWは左上になります。anchorについてはこちらをご参照下さい。

#5---ループ
root.mainloop()

5の部分では、オブジェクトのループを行っています。

結果

画像が配置されていることが確認できました。

プルダウン

プルダウンの使用例です。

from tkinter import *
import tkinter as tk
import tkinter.messagebox as mb
import tkinter.ttk as ttk
#1---windowの作成
root = Tk()
root.title("Test")
root.configure(bg="#fffbdb")
root.geometry('640x480')

#2---プルダウン作成
option = [".bat", ".csv", ".xlsx", ".txt"]
variable = tk.StringVar()
combo=ttk.Combobox(root,values=option,textvariable=variable)
combo.bind("<<ComboboxSelected>>")
combo.pack()

root.mainloop()

上記がプログラムになります。

それでは解説していきます。1の部分については上記の「ウィンドウの作成」をご参照下さい。

#2---プルダウン作成
option = [".bat", ".csv", ".xlsx", ".txt"]
variable = tk.StringVar()
combo=ttk.Combobox(root,values=option,textvariable=variable)
combo.bind("<<ComboboxSelected>>")
combo.pack()

2の部分で、プルダウンを作成しています。最初にプルダウンの選択項目を指定しています。

次にStringVar()を呼び出して文字列を変数化しています。

「ttk.Combobox()」でプルダウンを作成しています。

bind()メソッドでプルダウンで選択した項目を紐づけています。

結果

プルダウンが作成されていることを確認できました。

その他、Pythonを用いたアプリケーション例

項目内容
「pyinstaller」を用いたプログラムのexe化方法リンク先ではpythonで作成してプログラムを「pyinstaller」を用いて「exe」化する方法について解説しています。
Entryの使用例まとめリンク先ではTkinterでのEntryの使用例をまとめています。Entryの作成から文字の挿入方法などを解説しています。

おすすめの書籍

・PythonフレームワークFlaskで学ぶWebアプリケーションのしくみとつくり

Flaskについて広く学べる一冊です。実際に動かすサンプルコードは少し問題がありますが、細かい知識を深めるというよりは概要を学ぶのに適切な一冊です。

・Djangoのツボとコツがゼッタイにわかる本

Djangoについて広く学ぶのに適切な一冊です。こちらも細かい知識を深めるというよりは概要を学ぶのにおすすめです。実際に動かしながら体系的に学べる点が良いです。

・演習で学ぶWebサイト・Webアプリケーション制作入門

Pythonではないですが、PHPやJavaScriptなどの基本的なことを学ぶことができるので、これからWebアプリケーションを作成する方にはおすすめです。

タイトルとURLをコピーしました