การใช้งาน Python GUI (Tkinter) : การสร้าง UI ที่ประกอบด้วย Label เพื่อแสดงเวลา และ Button สําหรับการคลิก เพื่อดาวน์โหลด

Post a reply

Smilies
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: การใช้งาน Python GUI (Tkinter) : การสร้าง UI ที่ประกอบด้วย Label เพื่อแสดงเวลา และ Button สําหรับการคลิก เพื่อดาวน์โหลด

การใช้งาน Python GUI (Tkinter) : การสร้าง UI ที่ประกอบด้วย Label เพื่อแสดงเวลา และ Button สําหรับการคลิก เพื่อดาวน์โหลด

by ธวัชชัย แสนหาญ » 26/02/2019 6:13 pm

การใช้งาน Python GUI (Tkinter) : การสร้าง UI ที่ประกอบด้วย Label เพื่อแสดงเวลา และ Button สําหรับการคลิก เพื่อดาวน์โหลด

เป็นการสร้าง UI ที่ประกอบด้วย Label เพื่อแสดงเวลา และ Button สําหรับการคลิก เพื่อดาวน์โหลด ดังหลักการต่อไปนี้
เมื่อเริ่มต้น ให้ Button อยู่ในสถานะ DISABLED (คลิกไม่ได้) และ Label แสดงการนับเวลาถอย
หลังจากวินาทีที่ 10 แล้วลดลงทุก 1 วินาที เป็น 9, 8, -, 1 เมื่อครบ 10 วินาที ให้เปลี่ยนสถานะของปุ่มเป็นปกติ (คลิกได้)

Code: Select all

from tkinter import *

window = Tk()
window.geometry('200x160')
window.option_add('*font', 'tahoma 12')

label = Label()
label.pack(pady=20)

button = Button(text='Download', state=DISABLED)
button.pack(pady=20)

count = 0
id = 0

def tick():
    global count, id

    count += 1
    label.config(text=f'กรุณารอ {11 - count} วินาที')

    id = label.after(1000, tick)     #ให้เรียกฟังก์ชันตัวมันเองทุก 1 วินาทีแบบ Recursion

    if count > 10:
        label.config(text='กรุณาคลิกปุ่ม Download')
        button.config(state=NORMAL)
        label.after_cancel(id)

tick()          #เรียกฟังก์ชันขึ้นมาทำงานครั้งแรก

mainloop()
Screenshot (65).png
สรุป
เป็นการสร้างปุ่มดาวน์โหลดแบบมีการหน่วงเวลา พอรอการดาวน์โหลด

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

Top