Page 1 of 1

การใช้งาน Python GUI (Tkinter) : การสร้าง UI เพื่อเพิ่ม-ลดค่าของเวลา

Posted: 25/02/2019 2:28 pm
by ธวัชชัย แสนหาญ
การใช้งาน Python GUI (Tkinter) : การสร้าง UI เพื่อเพิ่ม-ลดค่าของเวลา

การใช้งานPython GUI (Tkinter)
เป็นการสร้าง UI เพื่อเพิ่ม-ลดค่าของเวลา โดยใช้ Label แสดงเวลาพร้อมกับปุ่ม + และ - เพื่อเปลี่ยนจากเดิมไปทีละ 1
แต่ต้องไม่เกินขอบเขตที่เป็นไปได้ โดยมีการใช้รูปแบบฟังก์ชันดังนี้

รูปแบบการใช้ฟังก์ชัน

Code: Select all

def hour(op):       #ชั่วโมงต้องอยู่ระหว่าง 00-23
    h = int(h_var.get())
    if op == '+':
        h = h + 1 if h < 23 else 0
    elif op == '-':
        h = h - 1 if h > 0 else 23
โดยขั้นแรก ต้องสร้างตัวแปร h ขึ้นมา
ต่อไปสร้าง เงื่อนไข โดยการเช็คปุ่ม + เมื่อกด + ให้ทำ คำสั่ง if op == '+':
โดย ให้ h เพิ่มค่า ทีละ 1 โดย h จะต้องมีค่า น้อยกว่า 23 ถ้าเช็คแล้ว h ไม่น้อยกว่า 23 ให้ h = 0
ต่อไปสร้าง เงื่อนไข โดยการเช็คปุ่ม - เมื่อกด - ให้ทำ คำสั่ง if op == '-':
โดย ให้ h ]fค่า ทีละ 1 โดย h จะต้องมีค่า มากกว่า 0 ถ้าเช็คแล้ว h ไม่มากกว่า 0 ให้ h = 23

โค้ดที่ใช้รันโปรแกรม

Code: Select all

from tkinter import *

window = Tk()
window.geometry('200x180')
window.config(padx=10, pady=10)
window.option_add('*font', 'tahoma 10')
window.option_add('*Button.background', 'lightgray')
window.option_add('*Button.width', 3)

def add_grid(widget, r, c):
    widget.grid(row=r, column=c, padx=10, pady=5)

add_grid(Label(text='ชั่วโมง'), 0, 0)
add_grid(Label(text='นาที'), 0,1)
add_grid(Label(text='วินาที'), 0, 2)

add_grid(Button(text='+', command=lambda:hour('+')), 1, 0)
add_grid(Button(text='+', command=lambda:minute('+')), 1, 1)
add_grid(Button(text='+', command=lambda:second('+')), 1, 2)

h_var = StringVar(value='00')
m_var = StringVar(value='00')
s_var = StringVar(value='00')
add_grid(Label(textvariable=h_var), 2, 0)
add_grid(Label(textvariable=m_var), 2,1)
add_grid(Label(textvariable=s_var), 2, 2)

add_grid(Button(text='-', command=lambda:hour('-')), 3, 0)
add_grid(Button(text='-', command=lambda:minute('-')), 3, 1)
add_grid(Button(text='-', command=lambda:second('-')), 3, 2)

def hour(op):       #ชั่วโมงต้องอยู่ระหว่าง 00-23
    h = int(h_var.get())
    if op == '+':
        h = h + 1 if h < 23 else 0
    elif op == '-':
        h = h - 1 if h > 0 else 23

    h_var.set(format(h, '02'))      #จัดรูปแบบให้เป็นเลขหลัก (ถ้ามีหลักเดียวให้เติม 0 ข้างหน้า)

def minute(op):     #นาทีต้องอยู่ระหว่าง 00-59
    m = int(m_var.get())
    if op == '+':
        m = m + 1 if m < 59 else 0
    elif op == '-':
        m = m - 1 if m > 0 else 59

    m_var.set(format(m, '02'))

def second(op):
    s = int(s_var.get())
    if op == '+':
        s = s + 1 if s < 59 else 0
    elif op == '-':
        s = s - 1 if s > 0 else 59

    s_var.set(format(s, '02'))

mainloop()

ผลลัพธ์รันโปรแกรม
    • 112.JPG
      112.JPG (16.05 KiB) Viewed 843 times
สรุป
เป็นการสร้าง UI เพื่อเพิ่ม-ลดค่าของเวลา โดยใช้ Label แสดงเวลาพร้อมกับปุ่ม + และ - เพื่อเปลี่ยนจากเดิมไปทีละ 1
แต่ต้องไม่เกินขอบเขตที่เป็นไปได้

ช่องทางศึกษาเพิ่มเติม :baa:
เทคนิคการเขียน Python
บทเรียน Python
Programming - C/C++ & java & Python
บทเรียน Python GUI
บทเรียน Python Framework Flask