Pythonのスクリプトの実行をGUIで行えるようにするには,tkinterを用いる.

雛形

import sys
import tkinter as tk

root = tk.Tk()
root.title(u'タイトル')
root.geometry('600x480') # 画面サイズ

# ボタン等はここに書く

root.mainloop()

テキスト

テキストはLabelで作ることができる.

txt = tk.Label(text=u'説明文')
txt.pack()

自動配置はpackで行われるが,place(x=10, y=20)のように位置を指定することもできる.

ボタン

ボタンで行う処理は別途関数を作っておき,ボタンにbindする.
なお,ここでの<Button-1>は左クリックのこと.

def sample_func(event):
# 省略

btn = tk.Button(text=u'削除', width=50)
btn.bind('<Button-1>', sample_func)
btn.pack()

テキストボックス

テキストボックスはEntryで作ることができる.

txtbox = tk.Entry(width=50)
txtbox.insert(tk.INSERT, '挿入する文字列')
txtbox.pack()

insertの第1引数は挿入位置で,

  • INSERT: 挿入カーソルのあるから
  • END: 最後の文字の後ろから

となる.

クリアは

txtbox.delete(0, tk.END)

のようにする.

チェックボックス

ブール値を格納する変数をBooleanVarで用意し,setで初期値を与える.

bl1 = tk.BooleanVar()
bl2 = tk.BooleanVar()
bl3 = tk.BooleanVar()

bl1.set(False)
bl2.set(True)
bl3.set(False)

chkbox1 = tk.Checkbutton(text=u'チェックボックス1', variable=bl1)
chkbox1.pack()

chkbox2 = tk.Checkbutton(text=u'チェックボックス2', variable=bl2)
chkbox2.pack()

chkbox3 = tk.Checkbutton(text=u'チェックボックス3', variable=bl3)
chkbox3.pack()

チェックボックスを使った関数は別途作り,ボタン等に紐づける.

def checkbox_sample_func(event):
global bl1
global bl2
global bl3

text = ''

if bl1.get() == True:
# 1番目にチェックが入っていたときの処理
else:
# 1番目にチェックが入っていなかったときの処理

# 以下略

ラジオボタン

frame = tk.Frame()
var = tk.IntVar(value=0) # 引数は初期値

radio1 = tk.Radiobutton(frame, value=0, variable=var, text='ラジオボタン名1')
radio2 = tk.Radiobutton(frame, value=1, variable=var, text='ラジオボタン名2')

frame.pack()
radio1.pack()
radio2.pack()

選択されたものはvar.get()で取得する.
たとえば,

def sample_func(event):
global var
# 処理

として,ボタン等と紐づけて使う.

メッセージボックス

予めメッセージボックスをインポートしておく.

from tkinter import messagebox

必要なところで次のようにする.

messagebox.showinfo('見出し', '表示する文章')

アプリ化

cxfreezeを使う場合であれば,

cxfreeze -c hello.py --target-dir dist

の形.