Tkinter পাইথনের একটি লাইব্রেরি GUI (Graphical User Interfaces) ডেভেলপ করার জন্য। আমরা UI (User Interface) অ্যাপ্লিকেশন তৈরি করতে tkinter লাইব্রেরি ব্যবহার করি, উইন্ডো এবং অন্যান্য সকল গ্রাফিক্যাল ইউজার ইন্টারফেস তৈরি করতে।
আপনি যদি পাইথন ৩.x ব্যবহার করেন (যেটি রিকমেন্ডেড), Tkinter পাইথনের সাথে একটি স্ট্যান্ডার্ড প্যাকেজ হিসেবে আসে, তাই এটি ব্যবহার করার জন্য আলাদা কিছু ইনস্টল করতে হবে না।
Tkinter-এ রেজিস্ট্রেশন ফর্ম তৈরি করার আগে, চলে প্রথমে Tkinter-এ একটি সিম্পল GUI অ্যাপ্লিকেশন তৈরি করি।
একটি সিম্পল 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()
উপরের লাইনগুলো রান করলে আউটপুট কিছু এইরকম見える:

উপরের কোডের লাইনগুলো বুঝি:
প্রথমে আমরা সব মডিউল ইম্পোর্ট করি যা দরকার, আমরা tkinter লাইব্রেরি থেকে ttk এবং * (সব) ইম্পোর্ট করেছি।
আমাদের অ্যাপ্লিকেশনের মেইন উইন্ডো তৈরি করতে, আমরা Tk ক্লাস ব্যবহার করি।
window.title(), আমাদের উইন্ডো অ্যাপকে টাইটেল দেয়।
window.geometry(), উইন্ডোর আকার সেট করে এবং window.configure(), এর ব্যাকগ্রাউন্ড রং সেট করে।
ttk.Button() একটি বাটন তৈরি করে।
ttk.Button(window, text="Hello, Tkinter").grid() - window মানে Tk তাই আমরা যে উইন্ডো তৈরি করেছি সেটিতে দেখাবে, text- উইন্ডোতে টেক্সট দেখাবে এবং grid এটিকে গ্রিডে সাজাবে।
Window.mainloop(), এই ফাংশন উইন্ডোর এন্ডলেস লুপ কল করে, তাই ইউজার বন্ধ না করার পর্যন্ত খোলা থাকবে।
আমাদের আগের উদাহরণকে একটু এক্সটেন্ড করি, কোডে কয়েকটি Label (label হলো একটি সিম্পল উইজেট যা টেক্সট বা ইমেজের টুকরো ডিসপ্লে করে) এবং Button (button সাধারণত সরাসরি ইউজার অ্যাকশনে ম্যাপ করা থাকে অর্থাৎ একটি বাটনে ক্লিক করলে কিছু অ্যাকশন হওয়া উচিত) যোগ করি।
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()
উপরের কোড রান করলে আউটপুট স্ক্রিন কিছু এইরকম দেখাবে:

এখন আসলে কিছু বাস্তব জগত থেকে তৈরি করি, হয়তো একটি লোন ইন্টারেস্ট ক্যালকুলেটর। সেটির জন্য আমাদের কয়েকটি আইটেম (ভেরিয়েবল) জানতে হবে, যেমন মূলধন (principal amount), লোন রেট (r), s পেমেন্টের পর ব্যালেন্স (Bs)। s পেমেন্টের পর লোন ক্যালকুলেট করার জন্য নিচের প্রোগ্রামে সূত্রটি ব্যবহার করা হলো -
Ps = ((1+r)^s * Bo) - (((1 + r)^s - 1) / r) * p
যেখানে -
Rate = ইন্টারেস্ট রেট যেমন 7.5%
i = rate/100, वार्षিক রেট ডেসিমেলে
r = পিরিয়ড রেট = i/12
Po = মূলধন
Ps = s পেমেন্টের পর ব্যালেন্স
s = মাসিক পেমেন্টের সংখ্যা
p = পিরিয়ড (মাসিক) পেমেন্ট
সো নিচে ইন্টারেস্ট রেট ক্যালকুলেটর প্রোগ্রামটি দেওয়া হলো, যা একটি পপ-আপ উইন্ডো দেখাবে, যেখানে ইউজার ডিজার্ড ভ্যালু সেট করতে পারবে (লোন অ্যামাউন্ট, রেট, ইনস্টলমেন্টের সংখ্যা) এবং পাইথন tkinter লাইব্রেরির সাহায্যে মাসিক পেমেন্ট অ্যামাউন্ট এবং বাকি লোন যা দিতে হবে সেটি পাবে।
from tkinter import *
fields = ('Annual Rate', 'Number of Payments', 'Loan Principle', 'Monthly Payment', 'Remaining Loan')
def monthly_payment(entries):
# পিরিয়ড রেট:
r = (float(entries['Annual Rate'].get()) / 100) / 12
print("r", r)
# মূলধন লোন:
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):
# পিরিয়ড রেট:
r = (float(entries['Annual Rate'].get()) / 100) / 12
print("r", r)
# মূলধন লোন:
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()
আউটপুট

উপরে থেকে আমরা দেখতে পাচ্ছি ইউজার লোন অ্যামাউন্ট, রেট এবং পেমেন্ট সংখ্যা দিয়ে ফাইনাল (বাকি) ব্যালেন্স এবং মাসিক পেমেন্ট বের করতে পারছে।