Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

สร้างนาฬิกาจับเวลา (Stopwatch) ด้วย Python

นาฬิกาจับเวลา (Stopwatch) ใช้วัดช่วงเวลาระหว่างสองเหตุการณ์ ปกติเป็นวินาทีถึงนาที มีการใช้งานหลากหลาย เช่น ในกีฬา หรือวัดการไหลของความร้อน กระแสไฟฟ้า เป็นต้น ในการตั้งโรงงาน Python สามารถสร้าง Stopwatch ได้โดยใช้ไลบรารี tkinter

ไลบรารีนี้จะมีคุณสมบัติ GUI สำหรับสร้าง Stopwatch แสดงตัวเลือก Start, Stop และ Reset องค์ประกอบสำคัญของโปรแกรมคือการใช้โมดูล label.after() ของ tkinter

label.after(parent, ms, function=None)
โดย parent: อ็อบเจกต์ของ widget ที่ใช้ฟังก์ชันนี้
ms: เวลาในมิลลิวินาที
function: ฟังก์ชัน callback

ในโปรแกรมด้านล่าง เราใช้เมธอดนี้เป็นองค์ประกอบหลักและออกแบบ widget แสดงคุณสมบัติ GUI ใน Stopwatch

ตัวอย่าง

import tkinter as tink

count = -1
run = False

def var_name(mark):
    def value():
        if run:
            global count
            # ก่อนเริ่มต้น
            if count == -1:
                show = "Starting"
            else:
                show = str(count)
            mark['text'] = show
            # เพิ่ม count ทุก 1 วินาที
            mark.after(1000, value)
            count += 1
    value()

# ขณะทำงาน
def Start(mark):
    global run
    run = True
    var_name(mark)
    start['state'] = 'disabled'
    stop['state'] = 'normal'
    reset['state'] = 'normal'

# ขณะหยุด
def Stop():
    global run
    start['state'] = 'normal'
    stop['state'] = 'disabled'
    reset['state'] = 'normal'
    run = False

# สำหรับ Reset
def Reset(label):
    global count
    count = -1
    if run == False:
        reset['state'] = 'disabled'
        mark['text'] = 'Welcome'
    else:
        mark['text'] = 'Start'

base = tink.Tk()
base.title("PYTHON STOPWATCH")
base.minsize(width=300, height=200)
mark = tink.Label(base, text="Welcome", fg="blue", font="Times 25 bold", bg="white")
mark.pack()
start = tink.Button(base, text='Start', width=25, command=lambda: Start(mark))
stop = tink.Button(base, text='Stop', width=25, state='disabled', command=Stop)
reset = tink.Button(base, text='Reset', width=25, state='disabled', command=lambda: Reset(mark))
start.pack()
stop.pack()
reset.pack()
base.mainloop()

ภาพด้านล่างแสดง 3 สถานการณ์ที่แตกต่างกันเมื่อรัน Stopwatch:

เริ่มต้น Stopwatch

สร้างนาฬิกาจับเวลา (Stopwatch) ด้วย Python

Stopwatch กำลังทำงาน

สร้างนาฬิกาจับเวลา (Stopwatch) ด้วย Python

หยุด Stopwatch

สร้างนาฬิกาจับเวลา (Stopwatch) ด้วย Python

รีเซ็ต Stopwatch

สร้างนาฬิกาจับเวลา (Stopwatch) ด้วย Python