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

เมธอด after ใน Python Tkinter

Tkinter เป็นไลบรารี Python สำหรับสร้าง GUI มีเมธอดในตัวมากมายสำหรับสร้างและจัดการหน้าต่าง GUI และวิดเจ็ตอื่นๆ เพื่อแสดงข้อมูลและเหตุการณ์ GUI ในบทความนี้เราจะดูวิธีใช้เมธอด after ใน Tkinter GUI

ไวยากรณ์

.after(delay, FuncName=FuncName)
เมธอดนี้เรียกฟังก์ชัน FuncName หลังจากหน่วงเวลาที่กำหนดเป็นมิลลิวินาที

การแสดงวิดเจ็ต

ที่นี่เราสร้างเฟรมเพื่อแสดงรายการคำสุ่ม เราใช้ไลบรารี random ร่วมกับเมธอด after เพื่อเรียกฟังก์ชันแสดงรายการข้อความที่กำหนดแบบสุ่ม

ตัวอย่าง

import random
from tkinter import *

base = Tk()
a = Label(base, text="After() Demo")
a.pack()
contrive = Frame(base, width=450, height=500)
contrive.pack()
words = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']

# แสดงวันในสัปดาห์สุ่มทีละคำ
def display_weekday():
    if not words:
        return
    rand = random.choice(words)
    character_frame = Label(contrive, text=rand)
    character_frame.pack()
    contrive.after(500, display_weekday)
    words.remove(rand)

base.after(0, display_weekday)
base.mainloop()

การรันโค้ดข้างต้นจะให้ผลลัพธ์ดังนี้:

เมธอด after ใน Python Tkinter

เมื่อรันโปรแกรมเดิมอีกครั้ง จะได้ลำดับคำที่ต่างกัน

เมธอด after ใน Python Tkinter

การหยุดการประมวลผล

ในตัวอย่างต่อไปเราจะดูวิธีใช้เมธอด after เป็นกลไกหน่วงเวลา เพื่อรอให้กระบวนการทำงานเป็นเวลาจำนวนหนึ่งแล้วหยุดกระบวนการ เรายังใช้เมธอด destroy เพื่อหยุดการประมวลผล

ตัวอย่าง

from tkinter import Tk, mainloop, TOP
from tkinter.ttk import Button
from time import time

base = Tk()
stud = Button(base, text='After Demo()')
stud.pack(side=TOP, pady=8)
print('processing Begins...')
begin = time()
base.after(3000, base.destroy)
mainloop()
conclusion = time()
print('process destroyed in %d seconds' % (conclusion - begin))

การรันโค้ดข้างต้นจะให้ผลลัพธ์ดังนี้:

processing Begins...
process destroyed in 3 seconds

สรุป: เมธอด after มีประโยชน์สำหรับการ排程งาน (scheduling) และการหน่วงเวลาในแอปพลิเคชัน Tkinter