Tkinter เป็นไลบรารี Python สำหรับพัฒนา GUI (Graphical User Interfaces) เราใช้ไลบรารี tkinter สำหรับสร้างแอปพลิเคชัน UI (User Interface) เพื่อสร้างหน้าต่างและอินเตอร์เฟซผู้ใช้กราฟิกทั้งหมด
หากคุณใช้ Python 3.x (ซึ่งแนะนำ) Tkinter จะมาพร้อมกับ Python เป็นแพ็กเกจมาตรฐาน ดังนั้นเราไม่ต้องติดตั้งอะไรเพื่อใช้มัน
ก่อนสร้างแบบฟอร์มลงทะเบียนใน Tkinter มาสร้าง GUI application ง่ายๆ ใน Tkinter ก่อน
การสร้าง GUI Application ง่ายๆ
ด้านล่างคือโปรแกรมสร้างหน้าต่างโดยเพียงแค่นำเข้า Tkinter และตั้งชื่อมัน −
from tkinter import * from tkinter import ttk window = Tk() window.title("Welcome to TutorialsPoint") window.geometry('325x250') window.configure(background = "gray") ttk.Button(window, text="Hello, Tkinter").grid() window.mainloop()
เมื่อรันโค้ดข้างต้น คุณจะเห็นผลลัพธ์ประมาณ −

มาเข้าใจโค้ดข้างต้น −
ขั้นแรก เรานำเข้าโมดูลทั้งหมดที่เราต้องการ เราได้นำเข้า ttk และ * (ทั้งหมด) จากไลบรารี tkinter
เพื่อสร้างหน้าต่างหลักของแอปพลิเคชันของเรา เราใช้คลาส Tk
window.title() ให้ชื่อกับ Window app ของเรา
window.geometry() ตั้งค่าขนาดหน้าต่าง และ window.configure() ตั้งค่าสีพื้นหลัง
ttk.Button() สร้างปุ่ม
ttk.Button(window, text="Hello, Tkinter").grid() - window หมายถึง Tk ดังนั้นแสดงในหน้าต่างที่เราสร้าง text - จะแสดงข้อความในหน้าต่าง และ grid จะทำให้อยู่ในกริด
Window.mainloop() ฟังก์ชันนี้เรียก infinite loop ของหน้าต่าง จะคงเปิดจนกว่าผู้ใช้จะปิดมัน
ลองขยายตัวอย่างก่อนหน้าของเรา โดยเพิ่ม Labels สองสามตัว (label เป็น widget เรียบง่ายที่แสดงข้อความหรือรูปภาพ) และปุ่ม (ปุ่มมักจะแมปโดยตรงกับการกระทำของผู้ใช้ หมายถึงเมื่อคลิกปุ่ม ควรมีการกระทำบางอย่างเกิดขึ้น) ในโค้ด
from tkinter import * from tkinter import ttk window = Tk() window.title("Welcome to TutorialsPoint") window.geometry('400x400') window.configure(background = "grey"); a = Label(window ,text = "First Name").grid(row = 0,column = 0) b = Label(window ,text = "Last Name").grid(row = 1,column = 0) c = Label(window ,text = "Email Id").grid(row = 2,column = 0) d = Label(window ,text = "Contact Number").grid(row = 3,column = 0) a1 = Entry(window).grid(row = 0,column = 1) b1 = Entry(window).grid(row = 1,column = 1) c1 = Entry(window).grid(row = 2,column = 1) d1 = Entry(window).grid(row = 3,column = 1) def clicked(): res = "Welcome to " + txt.get() lbl.configure(text= res) btn = ttk.Button(window ,text="Submit").grid(row=4,column=0) window.mainloop()
เมื่อรันโค้ดข้างต้น เราจะเห็นหน้าจอผลลัพธ์ประมาณ −

ตอนนี้มาสร้างบางอย่างจากโลกความเป็นจริง อาจจะเป็นเครื่องคำนวณดอกเบี้ยกู้ยืม สำหรับนั้น เราต้องการรายการ (ตัวแปร) สองสามอย่างที่จะต้องทราบ เช่น จำนวนเงินต้น อัตราดอกเบี้ยกู้ (r) ยอดคงเหลือ (Bs) หลังจากชำระ s ครั้ง ในการคำนวณเงินกู้หลังจาก s การชำระ เราใช้สูตรในโปรแกรมด้านล่าง −
Ps = ((1+r)^s.Bo) - (((1 + r)^s - 1)/ r)*p
โดยที่ −
Rate = อัตราดอกเบี้ย เช่น 7.5%
i = rate/100, อัตราต่อปีในทศนิยม
r = period rate = i/12
Po = จำนวนเงินต้น
Ps = ยอดคงเหลือหลังจาก s การชำระ
s = จำนวนการชำระรายเดือน
p = การชำระระยะเวลา (รายเดือน)
ดังนั้นด้านล่างคือโปรแกรมคำนวณอัตราดอกเบี้ย ซึ่งจะแสดงหน้าต่างป๊อปอัพ ที่ผู้ใช้สามารถตั้งค่าที่ต้องการ (จำนวนเงินกู้ อัตราดอกเบี้ย จำนวนงวด) และจะได้จำนวนเงินชำระรายเดือนและยอดเงินกู้ที่เหลือต้องชำระ ด้วยความช่วยเหลือของไลบรารี Python tkinter
from tkinter import * fields = ('Annual Rate', 'Number of Payments', 'Loan Principle', 'Monthly Payment', 'Remaining Loan') def monthly_payment(entries): # period rate: r = (float(entries['Annual Rate'].get()) / 100) / 12 print("r", r) # principal loan: loan = float(entries['Loan Principle'].get()) n = float(entries['Number of Payments'].get()) remaining_loan = float(entries['Remaining Loan'].get()) q = (1 + r)** n monthly = r * ( (q * loan - remaining_loan) / ( q - 1 )) monthly = ("%8.2f" % monthly).strip() entries['Monthly Payment'].delete(0,END) entries['Monthly Payment'].insert(0, monthly ) print("Monthly Payment: %f" % float(monthly)) def final_balance(entries): # period rate: r = (float(entries['Annual Rate'].get()) / 100) / 12 print("r", r) # principal loan: loan = float(entries['Loan Principle'].get()) n = float(entries['Number of Payments'].get()) q = (1 + r)** n monthly = float(entries['Monthly Payment'].get()) q = (1 + r)** n remaining = q * loan - ( (q - 1) / r) * monthly remaining = ("%8.2f" % remaining).strip() entries['Remaining Loan'].delete(0,END) entries['Remaining Loan'].insert(0, remaining ) print("Remaining Loan: %f" % float(remaining)) def makeform(root, fields): entries = {} for field in fields: row = Frame(root) lab = Label(row, width=22, text=field+": ", anchor='w') ent = Entry(row) ent.insert(0,"0") row.pack(side = TOP, fill = X, padx = 5 , pady = 5) lab.pack(side = LEFT) ent.pack(side = RIGHT, expand = YES, fill = X) entries[field] = ent return entries if __name__ == '__main__': root = Tk() ents = makeform(root, fields) root.bind('', (lambda event, e = ents: fetch(e))) b1 = Button(root, text = 'Final Balance', command=(lambda e = ents: final_balance(e))) b1.pack(side = LEFT, padx = 5, pady = 5) b2 = Button(root, text='Monthly Payment', command=(lambda e = ents: monthly_payment(e))) b2.pack(side = LEFT, padx = 5, pady = 5) b3 = Button(root, text = 'Quit', command = root.quit) b3.pack(side = LEFT, padx = 5, pady = 5) root.mainloop()
ผลลัพธ์

จากข้างต้นเราเห็นว่าผู้ใช้สามารถหายอดคงเหลือสุดท้ายและค่าชำระรายเดือนได้โดยการป้อนจำนวนเงินกู้ อัตราดอกเบี้ย และจำนวนงวด