آدرس

تهران، خیابان شریعتی، بالاتر از سه راه ملک، روبروی آتش نشانی

شماره تماس

۰۹۱۹۳۴۲۶۲۵۱
۰۲۱۹۱۳۰۳۴۲۴

آدرس ایمیل

info@artarasaneh.com
artarasaneh@gmail.com

کد کامل ماشین‌حساب ساده با GUI (Tkinter) در پایتون

کد کامل ماشین‌حساب ساده با GUI (Tkinter) در پایتون

یک ماشین‌حساب ساده با رابط گرافیکی (GUI) با استفاده از کتابخانه‌ی Tkinter پایتون برایتون نوشتم. این برنامه عملیات‌های پایه ریاضی رو پشتیبانی می‌کنه: جمع، تفریق، ضرب، تقسیم.

یک ماشین‌حساب ساده با رابط گرافیکی (GUI) در پایتون با توضیحات کامل برای مبتدیان

در این آموزش پروژه‌محور یاد می‌گیریم چطور با استفاده از پایتون و کتابخانه قدرتمند Tkinter، یک ماشین‌حساب ساده و کاربردی با رابط گرافیکی (GUI) طراحی کنیم.

این پروژه برای کسانی مناسب است که با مفاهیم پایه‌ای پایتون آشنایی دارند و می‌خواهند مهارت‌های خود را وارد دنیای برنامه‌نویسی واقعی و طراحی اپلیکیشن کنند.

در این آموزش یاد می‌گیری:

  • نحوه ساخت پنجره گرافیکی با Tkinter
  • ساخت دکمه‌های اعداد و عملگرها
  • انجام محاسبات ریاضی با eval()
  • مدیریت رویدادها در رابط کاربری
  • طراحی برنامه‌ای شبیه ماشین‌حساب ویندوز

این پروژه پایه‌ای عالی برای ورود به برنامه‌نویسی دسکتاپ با پایتون است و می‌تواند مقدمه‌ای برای ساخت اپ‌های پیشرفته‌تر مانند نرم‌افزار حسابداری، ماشین‌حساب علمی یا اپلیکیشن موبایل با Kivy باشد.

اگر دوست داشتید میتونید ۵۰ مثال کاربردی پایتون رو هم در سایت مشاهده کنید

 اگر به آموزش‌های پروژه‌محور پایتون علاقه‌مند هستی، حتماً این ویدیو رو ببین و ما رو دنبال کن.

توضیحات کامل کد ماشین حساب پایتون

لطفا کد ها رو خط به خط بخونید و بعد بنویسید 

 1. وارد کردن کتابخانه Tkinter

import tkinter as tk

ییی این خط کتابخانه‌ی tkinter رو وارد می‌کنه که برای ساخت رابط‌های گرافیکی در پایتون استفاده می‌شه. به‌صورت خلاصه با tk استفاده می‌کنیم.

 2. تعریف تابع click

def click(button_text):
   current_text = entry.get()
   entry.delete(0, tk.END)
   entry.insert(0, current_text + button_text)

این تابع وقتی صدا زده می‌شه که یکی از دکمه‌های ماشین‌حساب (عدد یا عملگر) کلیک بشه. کاری که می‌کنه:

  • متن فعلی داخل کادر ورودی (entry.get()) رو می‌گیره
  • کل محتوا رو پاک می‌کنه
  • متن قبلی + متن جدید (عدد یا عملگر) رو دوباره داخل کادر می‌ذاره

 3. تعریف تابع محاسبه (=)


def calculate():
   try:
       result = eval(entry.get())
       entry.delete(0, tk.END)
       entry.insert(0, str(result))
   except Exception:
       entry.delete(0, tk.END)
       entry.insert(0, "خطا")

وقتی دکمه مساوی = زده می‌شه:

  • با eval() مقدار داخل کادر رو به‌عنوان یک عبارت ریاضی محاسبه می‌کنیم.
  • اگر عبارت مشکلی نداشته باشه، نتیجه رو نمایش می‌ده.
  • اگر خطا داشت (مثلاً تقسیم بر صفر یا اشتباه تایپی)، پیام "خطا" نشون داده می‌شه.

 4. تابع پاک کردن

def clear():
   entry.delete(0, tk.END)

وقتی دکمه "پاک کردن" کلیک می‌شه، کل متن کادر ورودی رو حذف می‌کنه.

 5. ساخت پنجره‌ی اصلی برنامه

window = tk.Tk()
window.title("ماشین‌حساب ساده با پایتون")
window.geometry("300x400")
  • یک پنجره جدید از نوع Tk می‌سازه.
  • عنوان برنامه رو تنظیم می‌کنه.
  • اندازه‌ی پنجره رو روی ۳۰۰ در ۴۰۰ پیکسل تنظیم می‌کنه.

 

 6. ساخت کادر ورودی برای نمایش اعداد

entry = tk.Entry(window, font=("Arial", 18), justify="right", bd=10, relief=tk.RIDGE)
entry.pack(fill=tk.BOTH, padx=10, pady=10)
  • محل نمایش عددها و نتیجه است.
  • فونت و سایز، ترازبندی به راست، حاشیه و ظاهر رو تنظیم کرده.
  • با pack() در بالای پنجره قرار گرفته.

7. لیست دکمه‌ها

buttons = [
   ['7', '8', '9', '/'],
   ['4', '5', '6', '*'],
   ['1', '2', '3', '-'],
   ['0', '.', '=', '+']
]

این آرایه لیستی از دکمه‌هایی هست که در ماشین‌حساب داریم، به شکل ۴ ردیف.

 8. ساخت دکمه‌ها با حلقه

for row_values in buttons:
   row = tk.Frame(window)
   row.pack(expand=True, fill="both")
   for btn_text in row_values:
       if btn_text == '=':
           btn = tk.Button(row, text=btn_text, font=("Arial", 16), command=calculate)
       else:
           btn = tk.Button(row, text=btn_text, font=("Arial", 16), command=lambda x=btn_text: click(x))
       btn.pack(side="left", expand=True, fill="both")
  • برای هر ردیف از دکمه‌ها یک Frame جدید درست می‌کنه.
  • برای هر دکمه در اون ردیف یک دکمه Button می‌سازه.
  • اگر دکمه مساوی باشه (=) تابع calculate رو بهش وصل می‌کنه.
  • در غیر این صورت تابع click رو با مقدار دکمه وصل می‌کنه.

 9. دکمه پاک کردن

clear_btn = tk.Button(window, text="پاک کردن", font=("Arial", 16), bg="tomato", command=clear)
clear_btn.pack(fill="both", padx=10, pady=10

 10. اجرای برنامه

window.mainloop()

این خط برنامه رو به حالت "منتظر کاربر" می‌بره تا رویدادها (کلیک‌ها، تایپ‌ها) رو مدیریت کنه. بدون این خط برنامه اجرا نمی‌شه.

 

import tkinter as tk
# تابع برای زمانی که دکمه‌ها فشرده می‌شن
def click(button_text):
   current_text = entry.get()
   entry.delete(0, tk.END)
   entry.insert(0, current_text + button_text)
# تابع محاسبه‌ی عبارت وارد شده
def calculate():
   try:
       result = eval(entry.get())
       entry.delete(0, tk.END)
       entry.insert(0, str(result))
   except Exception:
       entry.delete(0, tk.END)
       entry.insert(0, "خطا")
# تابع پاک کردن محتوا
def clear():
   entry.delete(0, tk.END)
# ساخت پنجره اصلی
window = tk.Tk()
window.title("ماشین‌حساب ساده با پایتون")
window.geometry("300x400")
# ورودی (جایی که عدد و عملیات نمایش داده می‌شه)
entry = tk.Entry(window, font=("Arial", 18), justify="right", bd=10, relief=tk.RIDGE)
entry.pack(fill=tk.BOTH, padx=10, pady=10)
# دکمه‌ها
buttons = [
   ['7', '8', '9', '/'],
   ['4', '5', '6', '*'],
   ['1', '2', '3', '-'],
   ['0', '.', '=', '+']
]
# ساخت گرید از دکمه‌ها
for row_values in buttons:
   row = tk.Frame(window)
   row.pack(expand=True, fill="both")
   for btn_text in row_values:
       if btn_text == '=':
           btn = tk.Button(row, text=btn_text, font=("Arial", 16), command=calculate)
       else:
           btn = tk.Button(row, text=btn_text, font=("Arial", 16), command=lambda x=btn_text: click(x))
       btn.pack(side="left", expand=True, fill="both")
# دکمه پاک کردن
clear_btn = tk.Button(window, text="پاک کردن", font=("Arial", 16), bg="tomato", command=clear)
clear_btn.pack(fill="both", padx=10, pady=10)
# اجرای برنامه
window.mainloop()
اشتراک گذاری :
مریم گوهرزاد
نویسنده

مریم گوهرزاد

مدرس و بنیانگذار هلدینگ آرتا رسانه. برنامه نویس و محقق حوزه بلاکچین

نظر خودتون رو با ما در میون بزارید

فیلدهای ستاره دار الزامی هستند . ایمیل شما منتشر نمیشود.

https://t.me/artarasaneh
tel:09193426251
https://wa.me/+989193426251
https://instagram.com/artarasaneh_com