tkinterの使い方メモです
パネルを表示する
オブジェクト作ってmainloop()すると表示しながら待機状態に入ってくれます。
import tkinter as tk
root = tk.Tk()
root.mainloop()

パネルの大きさを設定
root = tk.Tk()
root.geometry("500x320")
root.mainloop()

パネルのタイトルを設定
root = tk.Tk()
root.geometry("250x150")
root.title('あびゃー')
root.mainloop()

パーツを置く
文字列ラベル
root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる')
label.pack()
root.mainloop()

ボタン
以下はボタンを置くだけです。
root = tk.Tk()
root.geometry("250x150")
button = tk.Button(root, text="ぼたん", width=20, height=3)
button.pack()
root.mainloop()

ボタン操作に反応する
tkinterオブジェクトのbind()メソッドを実行すれば指定したeventが発生したときに関数を呼ぶように設定できます。bind()の第1引数がeventの種類、第2引数が呼ぶ関数です。以下では1回クリックされた時に発生するイベントでfunc()を呼ぶようにしています。
def func(event):
print('ボタンを押したぞい')
root = tk.Tk()
root.geometry("250x150")
button = tk.Button(root, text="ぼたん", width=20, height=3)
button.bind('<Button-1>', func)
button.place(x=40, y=125)
root.mainloop()
ボタン操作に対応して表示を変更する
呼ばれる側の引数はtkinterが渡してくるeventしか受け取る事ができないので、関数内部で変数を扱う場合はグローバル変数にするか、class内に置いてclassプロパティを受け取るようにします。
class TkinterClass:
def __init__(self):
self.count = 0
self.root = tk.Tk()
self.root.geometry("250x160")
label = tk.Label(text='押した回数をカウントします')
label.pack(pady=10)
self.button_text = tk.StringVar()
self.button_text.set(self.count)
button = tk.Button(self.root, textvariable=self.button_text, font=('', 32),
width=8, height=1, bg='#999999', activebackground="#aaaaaa")
button.bind('<ButtonPress>', self.func1)
button.pack(pady=10)
self.root.mainloop()
def func1(self, event):
self.count += 1
self.button_text.set(self.count)
if __name__ == '__main__':
tkc = TkinterClass()
フォントを指定する
font family, font size, style1, style2,… の順で指定します。
styleが複数ある場合は3つめ以降に続けて書いていきます。
root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる', font=('arial', 20, 'italic', 'overstrike'))
label.pack()
root.mainloop()

root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる', font=('', 20))
label.pack()
root.mainloop()

パーツの配置
3つの配置方法があります
pack(): 順に置いていく
grid(): グリッドで並べていく
place(): 座標指定で置いていく
pack()
引数なしでpack()すると中央揃えで上から順に並べます。
root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる1', font=("", 12), bg='#33ccaa', relief=tk.RIDGE, bd=2)
label.pack()
label = tk.Label(text='らべる2', font=("", 12), bg='#dd88aa', relief=tk.RIDGE, bd=2)
label.pack()
label = tk.Label(text='らべる3', font=("", 12), bg='#bbdd44', relief=tk.RIDGE, bd=2)
label.pack()
root.mainloop()

root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる1', font=("", 12), bg='#33ccaa', relief=tk.RIDGE, bd=2)
label.pack(anchor=tk.W)
label = tk.Label(text='らべる2', font=("", 12), bg='#dd88aa', relief=tk.RIDGE, bd=2)
label.pack(anchor=tk.W)
label = tk.Label(text='らべる3', font=("", 12), bg='#bbdd44', relief=tk.RIDGE, bd=2)
label.pack(anchor=tk.W)
root.mainloop()

fill=tk.Xで幅いっぱいに広げます。
root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる1', font=("", 12), bg='#33ccaa', relief=tk.RIDGE, bd=2)
label.pack(fill=tk.X)
label = tk.Label(text='らべる2', font=("", 12), bg='#dd88aa', relief=tk.RIDGE, bd=2)
label.pack(fill=tk.X)
label = tk.Label(text='らべる3', font=("", 12), bg='#bbdd44', relief=tk.RIDGE, bd=2)
label.pack(fill=tk.X)
root.mainloop()

root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる1', font=("", 12), bg='#33ccaa', relief=tk.RIDGE, bd=2)
label.pack(fill=tk.X, padx=10, pady=10)
label = tk.Label(text='らべる2', font=("", 12), bg='#dd88aa', relief=tk.RIDGE, bd=2)
label.pack(fill=tk.X, padx=10, pady=10)
label = tk.Label(text='らべる3', font=("", 12), bg='#bbdd44', relief=tk.RIDGE, bd=2)
label.pack(fill=tk.X, padx=10, pady=10)
root.mainloop()

grid()
何も指定しないと左上から下に追加していきます。
root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる1', font=("", 12), bg='#33ccaa', relief=tk.RIDGE, bd=2)
label.grid()
label = tk.Label(text='らべる2', font=("", 12), bg='#dd88aa', relief=tk.RIDGE, bd=2)
label.grid()
label = tk.Label(text='らべる3', font=("", 12), bg='#bbdd44', relief=tk.RIDGE, bd=2)
label.grid()
root.mainloop()

grid(row, column, columnspan)で位置と幅を指定
row, columnで位置を指定し、rowspan, columnspanで幅を指定します。
root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる1', font=("", 12), bg='#33ccaa', relief=tk.RIDGE, bd=2)
label.grid(row=0, column=0, columnspan=2, padx=10, pady=10, sticky=tk.W+tk.E)
label = tk.Label(text='らべる2', font=("", 12), bg='#dd88aa', relief=tk.RIDGE, bd=2)
label.grid(row=1, column=0, padx=10, pady=10)
label = tk.Label(text='らべる3', font=("", 12), bg='#bbdd44', relief=tk.RIDGE, bd=2)
label.grid(row=1, column=1, padx=10, pady=10)
root.mainloop()

place()
座標指定で配置します。
root = tk.Tk()
root.geometry("250x150")
label = tk.Label(text='らべる1', font=("", 12), bg='#33ccaa', relief=tk.RIDGE, bd=2)
label.place(x=10, y=10)
label = tk.Label(text='らべる2', font=("", 12), bg='#dd88aa', relief=tk.RIDGE, bd=2)
label.place(x=85, y=40)
label = tk.Label(text='らべる3', font=("", 12), bg='#bbdd44', relief=tk.RIDGE, bd=2)
label.place(x=25, y=90)
root.mainloop()

表示/非表示/終了
withdraw()で一時的に非表示に出来ます。
root.withdraw()
deiconify()で再表示できます。
root.deiconify()
destroy()すればtkinter窓を閉じてroot.loopmain()を抜けます。
root.destroy()