tkinterでチェックボタンを使ってみよう
1.はじめに
今回はtkinterの機能であるチェックボックスを使ってみます。これが終わればTkinterの一通りの機能を網羅したことになります。
2.コード
import tkinter as tk
win=tk.Tk()
win.title("python3_tkinter_part5")
win.geometry("500x300")
label=tk.Label(text="終わったタスクにチェックを入れて評価ボタンを押してください")
label.place(x=30,y=5)
Check_list=[]
Check_list_val=[]
Check_buttn_number=5
text_anser=[]
for i in range(Check_buttn_number):
Check_val=tk.BooleanVar()
Check_val.set(False)
Check_buttn=tk.Checkbutton(text="タスク"+str(len(Check_list)+1),variable=Check_val)
Check_buttn.place(x=30,y=i*30+30)
Check_list.append(Check_buttn)
Check_list_val.append(Check_val)
def Click_buttn():
text_anser=[]
for i in range(len(Check_list)):
if Check_list_val[i].get()==True:
text=tk.Label(text="タスクは終了しました")
text.place(x=100,y=i*30+32)
text_anser.append(1)
else:
text=tk.Label(text="タスクは未解決です",foreground="red")
text.place(x=100,y=i*30+32)
if len(text_anser)==Check_buttn_number:
text=tk.Label(text="お疲れ様でした,今日のタスクは終了です。")
text.place(x=100,y=250)
else:
text=tk.Label(text="終了したタスクは "+str(len(text_anser))+"/"+str(len(Check_list))+"個です")
text.place(x=100,y=250)
Button=tk.Button(win,width=5,background="#ffffff",text="評価",command=Click_buttn)
Button.place(x=30,y=250)
win.mainloop()
今回はToDoアプリを少し意識して作ってあります。このコードをすると以下のような5つのタスク(チェックボックス )とボタンが表示されます。
例えばタスク1とタスク2を終了したとして、タスク1とタスク2のチェック欄をマウスでクリックしてチェックを入れましょう。
この状態で下部の評価ボタンを押すと、終わったタスクの横には黒字で「タスクは終了しました」、終わってないタスクの横には赤字で「タスクは未解決です」という文字が表示されます。またボタンの横に終了したタスクが5個中2であることが表示されています。
ここでタスク1がやっぱり終わってなく、タスク4が終わっていたため変更したとしましょう。その場合、タスク1のチェックを外し、タスク4のチェックを入れて評価ボタンを再度押してあげます。すると次のようにちゃんと反映されます。
またタスクが全て終わった場合は「お疲れさまでした」と表示します。
3.説明
チェックボックスは通常以下のように作ります。
変数名 = tkinter.Checkbutton(text="表示させたい文字")
またチェックボックスに最初からチェックを入れておきたい場合などは以下のように書きます。(#以下はコメントです)
変数名1=tk.BooleanVar() #BooleanVar()はTrueかFalseを入れることができます
変数名1.set(True) #Trueを入れてます
変数名 = tkinter.Checkbutton(text="表示させたい文字",variable=変数名1) #変数名1はTrueなのでチェックボックスは最初からチェックが入ることになります。
以下にコード例を載せます
import tkinter as tk
win=tk.Tk()
win.title("Hello world")
win.geometry("500x300")
Check_val=tk.BooleanVar()
Check_val.set(True)
Check=tk.Checkbutton(text="チェックボタン",variable=Check_val)
Check.place(x=10,y=10)
win.mainloop()
今回はチェックボックスを5つ作りたかったので,for文(ループ)を使っています。
Check_buttn_number=5
for i in range(Check_buttn_number) #チェックボタンを5つ作る
~チェックボックスを作るコード~
以下にチェックボックスを5つ作るコード例を載せます。
import tkinter as tk
win=tk.Tk()
win.title("Hello world")
win.geometry("500x300")
Check_list=[]
Check_list_val=[]
Check_number=5
for i in range(Check_number):
Check_val=tk.BooleanVar()
Check_val.set(True)
Check=tk.Checkbutton(text="チェックボタン",variable=Check_val)
Check.place(x=10,y=30*i+30)
Check_list.append(Check_buttn)
Check_list_val.append(Check_val)
win.mainloop()
また1行目のラベルと最下部のボタンを作ってしまいます。
import tkinter as tk
win=tk.Tk()
win.title("Hello world")
win.geometry("500x300")
label=tk.Label(text="終了したタスクをチェックしてください")
label.place(x=10,y=5)
Check_list=[]
Check_list_val=[]
Check_number=5
for i in range(Check_number):
Check_val=tk.BooleanVar()
Check_val.set(True)
Check=tk.Checkbutton(text="チェックボタン",variable=Check_val)
Check.place(x=10,y=30*i+30)
Check_list.append(Check_buttn)
Check_list_val.append(Check_val)
Button=tk.Button(width=5,text="評価",background="#FFFFFF")
Button.place(x=30,y=250)
win.mainloop()
おすすめ書籍
tkinterは参考書が非常に少ないです、というより日本語の参考書はほぼ皆無です。個人的には以下がお勧めです。
私が勉強していた時は以下のような参考書がなくネットで調べながら苦労してtkinterを覚えましたが、もし当時こんな書籍があったらもっと楽に学べたのに...と思うくらい基本的内容について丁寧に書かれています。
Amazonの月額読み放題サービス「Kindle unlimited」でも読めます。
初回30日間は無料、退会も簡単なので試しに無料体験して読んでみてもよさそうです。
4.最後に
今回は必要なパーツを作りました。
次回はボタンを押すとチェックされた数を読み取り、チェック状態に適した文字を表示する機能を作りたいと思います。
↓次回の記事
www.stjun.com