Tkinterでスライダーを使ってカウントダウンを作る(Python タイマー作成)
本日の課題と目標
Tkinterでタイマーを作る
Tkinterでスライダーを利用する
はじめに
以前Kivyで作ったのと同じものをTkinterで作成します。最初に設定した秒数だけカウントダウンするプログラムです。
スライダー(slider)のことをTkinterではスケール(scale)というみたいです。
プログラムのコード
import tkinter import time # ウィンドウのタイトル名 root = tkinter.Tk() root.title("test") root.geometry("300x150") # キャンバスエリアの設定 canvas = tkinter.Canvas(root,width=300,height=150,bg="black") canvas.pack() def on_Scale(self): # 図形の削除 canvas.delete("Time") # 初期タイムの変更 canvas.create_text(150,40,text=s.get(),font=("Helvetica",30,"bold"),fill="white",tag="Time",anchor="c") def startButtonClick(): # グローバル変数の設定 global endTime endTime=time.time() + s.get() root.after(50,update) def update(): # 図形の削除 canvas.delete("Time") elapsedTime=endTime-time.time() if elapsedTime > 0: # 残り時間を0になるまで表示 canvas.create_text(150,40,text=round(elapsedTime,1),font=("Helvetica",30,"bold"),fill="white",tag="Time",anchor="c") root.after(50,update) else: # 残り時間が0になれば「OK」を表示 canvas.create_text(150,40,text="OK",font=("Helvetica",30,"bold"),fill="white",tag="Time",anchor="c") # 初期タイムを設定 var = tkinter.IntVar(master=root,value=3,) # スケール(スライダー)の作成 s = tkinter.Scale(root, orient='h',showvalue=False,variable=var,from_=1, to=10,length=160,command=on_Scale) s.place(x=70, y=68) # ボタンを作成 b = tkinter.Button(root,text="スタート",command=startButtonClick,width=8,font=("",14)) b.place(x=110, y=100) # テキストを作成 canvas.create_text(150,40,text=s.get(),font=("Helvetica",30,"bold"),fill="white",tag="Time",anchor="c") root.mainloop()
解説
round(self.elapsedTime,1)
round関数:小数点の桁数を指定する
root.after(50,update)
afterメソッド: after(時間間隔,関数名) 時間間隔は1000で1秒
canvas.create_text(150,40,text="OK",font=("Helvetica",30,"bold"),fill="white",tag="Time",anchor="c")
create_textメソッド:Canvasに文字列を表示する
create_text(横の位置, 縦の位置, 表示する文字, フォント, 色, 消すとき用の変数, 位置)
s = tkinter.Scale(root, orient='h',showvalue=False,variable=var,from_=1, to=10,length=160,command=on_Scale)
Scaleメソッド:スケール(スライダー)を表示する
Scale(画面の変数, 横向き, 文字なし, 初期値, 最小値, 最大値, 幅の長さ, 関数名)
プログラムの流れ
初期の数字をスケールで変更し、ボタンをクリック時にカウントダウンが始まり「0」になったら「OK」を表示するプログラムです。
参考サイト
保存ファイル
lesson40.py
文責:Luke