আমরা এতদিনে পাইথনের অবজেক্ট, ফাইল হ্যান্ডলিং, এপিআই এবং উইন্ডো-বাটন তৈরি করা শিখে গেছি। এবার সময় এসেছে এই জ্ঞানকে একসাথে কাজে লাগিয়ে এমন কিছু তৈরি করার, যা আমরা প্রতিদিন আমাদের হোমওয়ার্ক বা হিসাব-নিকাশে ব্যবহার করতে পারি।
আজকে আমরা tkinter ব্যবহার করে একটি সুন্দর ক্যালকুলেটর ইন্টারফেস বানাবো, যেখানে সংখ্যা ইনপুট দেওয়ার জন্য বক্স থাকবে এবং যোগ, বিয়োগ, গুণ, ভাগের আলাদা আলাদা বাটন থাকবে!
🏗️ আমাদের ক্যালকুলেটরের ডিজাইন
আমাদের অ্যাপটি দেখতে কেমন হবে, তার একটি ছোট্ট ম্যাপ করে নিই:
- দুটি ইনপুট ফিল্ড (Entry Field): যেখানে ইউজার দুটি সংখ্যা টাইপ করবে।
- অপারেশন বাটন (Buttons): +, −, ∗, / চিহ্নের বাটন।
- ফলাফল স্ক্রিন (Label): যেখানে হিসাবের ফাইনাল রেজাল্ট ভেসে উঠবে।
🎮 আজকের গ্র্যান্ড কোডিং প্রজেক্ট: স্মার্ট ক্যালকুলেটর
নিচের কোডটি তোমার এডিটরে কপি করো এবং রান করে ম্যাজিক দেখো:
Python
import tkinter as tk
# ১. মূল উইন্ডো সেটআপ
window = tk.Tk()
window.title("আমার স্মার্ট ক্যালকুলেটর 🧮")
window.geometry("350x400")
window.configure(bg="#E6E6FA") # হালকা ল্যাভেন্ডার ব্যাকগ্রাউন্ড
# ২. হিসাব করার জন্য ম্যাজিক ফাংশনসমূহ
def calculate(operation):
try:
# ইনপুট বক্স থেকে সংখ্যা দুটি নেওয়া এবং ফ্লোটে রূপান্তর করা
num1 = float(entry_num1.get())
num2 = float(entry_num2.get())
if operation == 'add':
result = num1 + num2
symbol = "+"
elif operation == 'sub':
result = num1 - num2
symbol = "-"
elif operation == 'mul':
result = num1 * num2
symbol = "×"
elif operation == 'div':
if num2 == 0:
result_label.config(text="❌ ০ দিয়ে ভাগ করা সম্ভব নয়!", fg="red")
return
result = num1 / num2
symbol = "÷"
# ফলাফল স্ক্রিনে দেখানো
result_label.config(text=f"ফলাফল: {num1} {symbol} {num2} = {result}", fg="green")
except ValueError:
result_label.config(text="⚠️ দয়া করে সঠিক সংখ্যা টাইপ করো!", fg="red")
# ৩. ইন্টারফেস বা ডিজাইন তৈরি করা
# শিরোনাম লেবেল
title_label = tk.Label(window, text="ক্ষুদে গণিতবিদদের ক্যালকুলেটর", font=("Arial", 14, "bold"), bg="#E6E6FA", fg="#4B0082")
title_label.pack(pady=15)
# প্রথম সংখ্যার ইনপুট বক্স
lbl1 = tk.Label(window, text="প্রথম সংখ্যাটি লেখো:", bg="#E6E6FA", font=("Arial", 10))
lbl1.pack()
entry_num1 = tk.Entry(window, font=("Arial", 12), justify="center")
entry_num1.pack(pady=5)
# দ্বিতীয় সংখ্যার ইনপুট বক্স
lbl2 = tk.Label(window, text="দ্বিতীয় সংখ্যাটি লেখো:", bg="#E6E6FA", font=("Arial", 10))
lbl2.pack()
entry_num2 = tk.Entry(window, font=("Arial", 12), justify="center")
entry_num2.pack(pady=5)
# ৪. বাটনগুলোর জন্য একটি ফ্রেম বা বক্স তৈরি
button_frame = tk.Frame(window, bg="#E6E6FA")
button_frame.pack(pady=20)
# অপারেশন বাটনসমূহ তৈরি ও পজিশন সেট করা (Grid Layout)
btn_add = tk.Button(button_frame, text="➕ যোগ", width=8, command=lambda: calculate('add'), bg="#98FB98", font=("Arial", 10, "bold"))
btn_add.grid(row=0, column=0, padx=5, pady=5)
btn_sub = tk.Button(button_frame, text="➖ বিয়োগ", width=8, command=lambda: calculate('sub'), bg="#FFB6C1", font=("Arial", 10, "bold"))
btn_sub.grid(row=0, column=1, padx=5, pady=5)
btn_mul = tk.Button(button_frame, text="✖️ গুণ", width=8, command=lambda: calculate('mul'), bg="#FFE4B5", font=("Arial", 10, "bold"))
btn_mul.grid(row=1, column=0, padx=5, pady=5)
btn_div = tk.Button(button_frame, text="➗ ভাগ", width=8, command=lambda: calculate('div'), bg="#AFEEEE", font=("Arial", 10, "bold"))
btn_div.grid(row=1, column=1, padx=5, pady=5)
# ৫. ফলাফল দেখানোর লেবেল
result_label = tk.Label(window, text="ফলাফল দেখার জন্য হিসাব করো", font=("Arial", 11, "bold"), bg="#E6E6FA", fg="#333333")
result_label.pack(pady=20)
# লুপ চালু করা
window.mainloop()
🧠 সমাপনী চ্যালেঞ্জ (The Ultimate Challenge)
চ্যালেঞ্জ: অভিনন্দন! তুমি ৮ সপ্তাহের সফল পাইথন ইন্টারমিডিয়েট কোর্স শেষ করে ফেলেছ! আজকের শেষ চ্যালেঞ্জ হলো—ক্যালকুলেটরে ১০÷০ দিয়ে দেখো আমাদের দেওয়া এরর মেসেজটি (“০ দিয়ে ভাগ করা সম্ভব নয়”) দেখায় কিনা। এরপর অ্যাপটি নিজের মতো করে টেস্ট করে তোমার কোডিং জার্নির অভিজ্ঞতা আমাদের কমেন্টে জানাও!
🎉 অভিনন্দন! ক্ষুদে কোডারদের জন্য ৮ সপ্তাহের পাইথন মাস্টার্স সিরিজের সবকটি পর্ব ও ফিচার ইমেজ সাফল্যের সাথে সম্পূর্ণ হলো।
