Start_python’s diary

ふたり暮らし

アラフィフ夫婦のフリーランスプラン

Tkinterでスライダーを使ってカウントダウンを作る(Python タイマー作成)

本日の課題と目標

Tkinterでタイマーを作る

Tkinterでスライダーを利用する

 

はじめに

以前Kivyで作ったのと同じものをTkinterで作成します。最初に設定した秒数だけカウントダウンするプログラムです。

スライダー(slider)のことをTkinterではスケール(scale)というみたいです。

 

f:id:Start_python:20191122203830g:plain

プログラムのコード

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」を表示するプログラムです。

 

 

参考サイト

www.python-beginners.com

www.not-enough.org

qiita.com

 

 

保存ファイル

lesson40.py

 

 

文責:Luke