1. はじめに
前々回の記事「自作タイマー」と、前回の記事「プログレスバー」を組み合わせて本格的なタイマーを作ってみました。
stjun.hatenablog.com
stjun.hatenablog.com
2020/01/26追記:プログラミング初心者に向けたpythonの勉強法と手順を記事にしました。
stjun.hatenablog.com
2. コード
import tkinter as tk
import tkinter.font as font
import tkinter.ttk as ttk
root=tk.Tk()
root.title("Timer")
text_sec=tk.StringVar()
text_sec.set("0")
my_font=font.Font(size=20)
text_min=tk.StringVar()
text_min.set("30")
buff_min=tk.StringVar()
buff_min.set("0")
buff_sec=tk.StringVar()
buff_sec.set("0")
text_start_stop=tk.StringVar()
text_start_stop.set("START")
progressbar=ttk.Progressbar(root,orient="horizontal",length=230,mode="determinate")
progressbar.grid(row=2,column=0,columnspan=7)
start=True
check=True
stop=False
def start():
global start,check,text_min,text_sec,start,check,stop,value_time
start=False
if check==True and stop==True:
start=True
text_start_stop.set("STOP")
timer()
elif check==False and stop==True:
count_min=int(buff_min.get())
count_sec=int(buff_sec.get())
buff_min.set("0")
buff_sec.set("0")
buff_min.set(count_min)
buff_sec.set(count_sec)
check=True
text_start_stop.set("START")
else:
start=True
stop=True
text_start_stop.set("STOP")
buff_min.set(int(text_min.get()))
buff_sec.set(int(text_sec.get()))
maximum_time=int(buff_min.get())*60+int(buff_sec.get())
value_time=0
div_time=1
progressbar.configure(maximum=maximum_time,value=value_time)
timer()
def timer():
global start,buff_min,buff_sec,text_min,text_sec,check,value_time,div_time
if start==True:
if int(buff_min.get())==0 and int(buff_sec.get())==0:
pass
else:
check=False
time_min=int(buff_min.get())
time_sec=int(buff_sec.get())
if time_min>=0:
time_sec-=1
buff_sec.set(str(time_sec))
value_time+=1
progressbar.configure(value=value_time)
root.after(1000,timer)
if time_sec==-1:
time_min-=1
buff_min.set(str(time_min))
buff_sec.set("59")
if int(buff_min.get())==0 and int(buff_sec.get())==0:
start=False
time_min=0
time_sec=0
buff_sec.set(str(time_sec))
buff_min.set(str(time_min))
def stop():
global start,check,stop
start=True
check=True
stop=False
time_min=0
time_sec=0
buff_sec.set(str(time_sec))
buff_min.set(str(time_min))
labbel=tk.Label(root,text="設定")
labbel.grid(row=0,column=0,columnspan=1)
entry=tk.Entry(root,width=2,font=my_font,textvariable=text_min)
entry.grid(row=0,column=1)
label_min=tk.Label(root,text=u"分")
label_min.grid(row=0,column=2)
entry1=tk.Entry(root,width=2,font=my_font,textvariable=text_sec)
entry1.grid(row=0,column=3)
label_sec=tk.Label(root,text=u"秒")
label_sec.grid(row=0,column=4)
button=tk.Button(root,textvariable=text_start_stop,command=start)
button.grid(row=0,column=5)
button=tk.Button(root,text=u"RESET",command=stop)
button.grid(row=0,column=6)
labbel=tk.Label(root,text="タイマー")
labbel.grid(row=1,column=0,columnspan=1)
labbel=tk.Label(root,font=my_font,textvariable=buff_min)
labbel.grid(row=1,column=1,columnspan=1)
labbel=tk.Label(root,text="分")
labbel.grid(row=1,column=2,columnspan=1)
labbel=tk.Label(root,font=my_font,textvariable=buff_sec)
labbel.grid(row=1,column=3,columnspan=1)
labbel=tk.Label(root,text="秒")
labbel.grid(row=1,column=4,columnspan=1)
root.mainloop()
コードを実行すると次の画面がでてきます。
例えば3分に設定をしてSTARTボタンを押すと、タイマーのカウントが始まり、最下部のバーも一秒ずつ増えていきます。またSTARTボタンがSTOPボタンに変わります。
STOPボタンを押すとタイマーが一時停止します。 プログレスバーも停止します。
再度STARTボタンを押すとタイマーが再開します。
またRESETボタンを押すとタイマーが0分0秒になり再度設定が可能になります。
■自分が使ってるお得情報の紹介
私はAmazon kindle unlimitedというサービスを1年以上利用しています。
これは月額980円で 和書12万冊以上の電子書籍を読めるサービスです。
ビジネス本、雑誌、漫画、技術本など様々な本を読むことができます。10冊まで端末にダウンロードできるのでネット環境がなくても(オフラインでも)見れます。
なおkindle unlimitedは最初の30日間無料のため、気軽に登録してみて、あまり読みたい本が無ければすぐに解約しても問題ありません。
それか30日内に気になる本を全て読破すれば実質タダです。
ぜひ気になった方はチェックしてみて下さい。
なおkindleにない本等を買う時はamazonギフト券(amazonで使えるポイント)を買い、ポイントで数冊まとめて買った方がお得です。
ギフト券(ポイント)は買ったら10年も有効で、ポイントが付きます。さらに本をまとめ買い(2冊以上同時に)買うと、ポイントがもらえます。
(https://www.amazon.co.jp/b?ie=UTF8&node=5431437051)
学生さんであればkindle unlimitedよりも年2450円(月210円程度)で映画見放題、音楽聞き放題、本読み放題の「prime student」がおすすめです。
以下に私がkindle unlimitedで読んだ本を載せておきます。
■雑誌系
3. 今後の課題
他のウインドを開くとウインドの後ろに隠れて見えなくなるため、タイマーとして使うには常に最前面に表示される必要がありますが調べてもやり方がわかりません。
詳しい方がいたら教えて下さい。
↓次の記事
www.stjun.com