Tkinter เป็นไลบรารี่หลามสำหรับการพัฒนา GUI (ส่วนต่อประสานกราฟิกกับผู้ใช้) เราใช้ไลบรารี tkinter เพื่อสร้างแอปพลิเคชันของ UI (ส่วนต่อประสานผู้ใช้) เพื่อสร้างหน้าต่างและส่วนต่อประสานกราฟิกกับผู้ใช้ทั้งหมด
หากคุณใช้ python 3.x (ซึ่งแนะนำ) Tkinter จะมาพร้อมกับ Python เป็นแพ็คเกจมาตรฐาน ดังนั้นเราจึงไม่ต้องติดตั้งอะไรเพื่อใช้งาน
ก่อนสร้างแบบฟอร์มการลงทะเบียนใน Tkinter ขั้นแรกให้สร้างแอปพลิเคชัน GUI อย่างง่ายใน Tkinter
การสร้างแอปพลิเคชัน GUI อย่างง่าย
ด้านล่างนี้เป็นโปรแกรมสร้างหน้าต่างโดยเพียงแค่นำเข้า 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 ของเรา
-
window.geometry() กำหนดขนาดของ window และ window.configure() ตั้งค่าสีพื้นหลัง
-
ttk.Button() สร้างปุ่ม
-
ttk.Button(window, text="Hello, Tkinter").grid() – window หมายถึง Tk เพื่อให้แสดงในหน้าต่างที่เราสร้างขึ้น text- จะแสดงข้อความในหน้าต่างและ grid จะทำให้เป็น กริด
-
Window.mainloop() ฟังก์ชันนี้เรียกการวนซ้ำไม่รู้จบของหน้าต่าง ดังนั้นจะยังคงเปิดอยู่จนกว่าผู้ใช้จะปิด
ลองขยายตัวอย่างก่อนหน้านี้ของเราโดยเพิ่มป้ายกำกับสองสามรายการ (ป้ายกำกับคือวิดเจ็ตง่ายๆ ที่แสดงข้อความหรือรูปภาพ) และปุ่ม (โดยปกติปุ่มจะจับคู่โดยตรงกับการกระทำของผู้ใช้ ซึ่งหมายถึงการคลิกปุ่ม การดำเนินการบางอย่าง ควรจะเกิดขึ้น) ในรหัส
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) หลังจากชำระเงิน ในการคำนวณสินเชื่อหลังการชำระเงิน เราใช้สูตรในโปรแกรมด้านล่าง −
Ps = ((1+r)^s.Bo) – (((1 + r)^s – 1)/ r)*p
ที่ไหน −
อัตรา =อัตราดอกเบี้ยเหมือน 7.5%
i =อัตรา/100 อัตรารายปีเป็นทศนิยม
r =อัตราระยะเวลา =i/12
Po =เงินต้น
Ps =ยอดคงเหลือหลังจากชำระเงิน
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('<Return>', (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()
ผลลัพธ์
จากด้านบน เราจะเห็นว่าผู้ใช้บริการสามารถค้นหายอดเงินสุดท้าย (คงเหลือ) และการชำระเงินรายเดือนโดยป้อนจำนวนเงินกู้ อัตราและหมายเลข ของการชำระเงิน