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

แบบฟอร์มลงทะเบียนง่ายๆ ด้วย Python Tkinter


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()

เมื่อรันโค้ดข้างต้น คุณจะเห็นผลลัพธ์ประมาณ −

แบบฟอร์มลงทะเบียนง่ายๆ ด้วย Python Tkinter

มาเข้าใจโค้ดข้างต้น −

  • ขั้นแรก เรานำเข้าโมดูลทั้งหมดที่เราต้องการ เราได้นำเข้า 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()

เมื่อรันโค้ดข้างต้น เราจะเห็นหน้าจอผลลัพธ์ประมาณ −

แบบฟอร์มลงทะเบียนง่ายๆ ด้วย Python Tkinter

ตอนนี้มาสร้างบางอย่างจากโลกความเป็นจริง อาจจะเป็นเครื่องคำนวณดอกเบี้ยกู้ยืม สำหรับนั้น เราต้องการรายการ (ตัวแปร) สองสามอย่างที่จะต้องทราบ เช่น จำนวนเงินต้น อัตราดอกเบี้ยกู้ (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()

ผลลัพธ์

แบบฟอร์มลงทะเบียนง่ายๆ ด้วย Python Tkinter

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