آموزش ساخت ماشین حساب گرافیکی در پایتون با Tkinter

در این آموزش، قصد داریم یک ماشین حساب گرافیکی ساده با استفاده از زبان برنامه نویسی پایتون و کتابخانه Tkinter ایجاد کنیم. این پروژه برای افرادی که تازه شروع به یادگیری پایتون کرده اند و می خواهند با مفاهیم اولیه ساخت رابط کاربری گرافیکی (GUI) آشنا شوند، بسیار مناسب است. در پایان این آموزش، شما یک ماشین حساب کاربردی خواهید داشت که می تواند عملیات های پایه ای مانند جمع، تفریق، ضرب و تقسیم را انجام دهد. برای دریافت فایل کامل پروژه بصورت رایگان، اینجا کلیک کنید.
پیش نیازها
قبل از شروع، مطمئن شوید که پایتون بر روی سیستم شما نصب شده است. برای نصب پایتون روی ویندوز این آموزش را مشاهده کنید. همچنین، نیاز به نصب کتابخانه تکینتر (Tkinter) دارید که معمولا به صورت پیش فرض با پایتون نصب میشود. اگر Tkinter نصب نیست، میتوانید آن را با دستور زیر در CMD نصب کنید:
pip install tk
پس از نصب، می توانید با دستور زیر نیز از نصب بودن کتابخانه Tkinter اطمینان حاصل کنید:
python -m tkinter
مرحله ۱: ایجاد پنجره اصلی برنامه
اولین قدم، ایجاد پنجره اصلی برنامه است. این پنجره به عنوان محیطی برای نمایش دکمه ها و ورودی های ماشین حساب عمل می کند.
import tkinter as tk
# ایجاد پنجره اصلی
root = tk.Tk()
root.title("ماشین حساب")
root.geometry("300x400")
# اجرای حلقه اصلی برنامه
root.mainloop()
در این کد، ما پنجره ای با عنوان “ماشین حساب” و اندازه 300×400 پیکسل ایجاد کرده ایم. تابع mainloop()
باعث می شود که پنجره باز بماند و منتظر رویدادهای کاربر باشد.
مرحله ۲: ایجاد نمایشگر ماشین حساب
در این مرحله، ما نیاز داریم یک نمایشگر (Entry
) برای ماشین حساب ایجاد کنیم تا اعداد و نتایج عملیات ها را به کاربر نشان دهد. این نمایشگر باید به گونه ای طراحی شود که خوانایی خوبی داشته باشد و در جای مناسب قرار گیرد.
# ایجاد نمایشگر
display = tk.Entry(root, font=("Arial", 20), justify="right")
display.grid(row=0, column=0, columnspan=4, padx=10, pady=10, sticky="nsew")
ایجاد ویجت
Entry
:- ما از ویجت
Entry
استفاده می کنیم تا یک فیلد متنی ایجاد کنیم که کاربر بتواند اعداد و نتایج عملیات ها را در آن ببیند. - این ویجت در پنجره اصلی (
root
) قرار می گیرد.
- ما از ویجت
تنظیم فونت و تراز متن:
- فونت نمایشگر را به
Arial
با اندازه20
تنظیم می کنیم تا متن به راحتی خوانده شود. - متن داخل نمایشگر سمت راستچین شده است. این کار باعث می شود اعداد و نتایج عملیات ها (که معمولا از سمت راست شروع می شوند) به درستی نمایش داده شوند.
- فونت نمایشگر را به
قرار دادن نمایشگر در پنجره:
- از روش
grid
برای چیدمان نمایشگر استفاده می کنیم. این روش به ما اجازه می دهد ویجت ها را در یک شبکه (شبکه ای از سطرها و ستون ها) قرار دهیم. - نمایشگر در سطر اول (
row=0
) و ستون اول (column=0
) شبکه قرار می گیرد. - نمایشگر ۴ ستون را اشغال می کند. این کار باعث می شود نمایشگر به اندازه ۴ دکمه (یا بیشتر) عرض داشته باشد.
- فاصله های داخلی (padding) در جهت افقی (
padx
) و عمودی (pady
) را تنظیم می کنیم. در اینجا فاصله های ۱۰ پیکسلی در اطراف نمایشگر اعمال شده است تا از لبه های پنجره فاصله داشته باشد. - گزینه sticky=”nsew باعث میشود نمایشگر به تمام جهات (بالا، پایین، راست، چپ) بچسبد و فضای اختصاص داده شده به خود را به طور کامل پر کند. این کار به ویژه زمانی مفید است که پنجره تغییر اندازه دهد.
- از روش
مرحله ۳: ایجاد دکمه های ماشین حساب
در این مرحله، ما دکمه های ماشین حساب را ایجاد میکنیم. این دکمه ها شامل اعداد ۰ تا ۹ و عملیات های پایه ای مانند جمع (+
)، تفریق (-
)، ضرب (*
) و تقسیم (/
) هستند. همچنین یک دکمه برای محاسبه نتیجه (=
) و یک دکمه برای نقطه اعشار (.
) اضافه می کنیم.
۱.تابع add_to_display
این تابع مقدار دکمهها را به نمایشگر (Entry
) اضافه میکند.
def add_to_display(value):
current = display.get() # متن فعلی نمایشگر را دریافت میکند
display.delete(0, tk.END) # محتوای فعلی نمایشگر را از ابتدا تا انتها پاک میکند
display.insert(0, current + value) # مقدار جدید (عدد یا عملگر) را به انتهای متن فعلی اضافه میکند و در نمایشگر قرار میدهد
۲. تابع calculate
این تابع نتیجه عملیات های ریاضی را محاسبه و در نمایشگر نشان می دهد.
def calculate():
try:
result = eval(display.get()) # عبارت ریاضی را محاسبه میکند
display.delete(0, tk.END) # محتوای فعلی نمایشگر را پاک میکند
display.insert(0, str(result)) # نتیجه را در نمایشگر قرار میدهد
except:
display.delete(0, tk.END) # در صورت خطا، محتوای نمایشگر را پاک میکند
display.insert(0, "خطا") # پیام "خطا" را نمایش میدهد
۳. ایجاد دکمهها
ما دکمه ها را به صورت یک لیست تعریف می کنیم و سپس با استفاده از یک حلقه، آنها را در پنجره قرار می دهیم.
buttons = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+'
]
این لیست شامل اعداد ۰ تا ۹، عملگرهای ریاضی (
+
,-
,*
,/
)، نقطه اعشار (.
) و دکمه مساوی (=
) است.
۴. چیدمان دکمه ها
با استفاده از یک حلقه، دکمه ها را در شبکه (grid
) قرار می دهیم.
row = 1 # شروع از ردیف ۱ (ردیف ۰ برای نمایشگر است)
col = 0 # شروع از ستون ۰
for button in buttons:
if button == '=':
# دکمه مساوی (=) را ایجاد میکند و تابع calculate را به آن متصل میکند
tk.Button(root, text=button, font=("Arial", 20), command=calculate).grid(row=row, column=col, padx=5, pady=5, sticky="nsew")
else:
# سایر دکمهها را ایجاد میکند و تابع add_to_display را به آنها متصل میکند
tk.Button(root, text=button, font=("Arial", 20), command=lambda b=button: add_to_display(b)).grid(row=row, column=col, padx=5, pady=5, sticky="nsew")
col += 1 # به ستون بعدی میرویم
if col > 3: # اگر ستون از ۳ بیشتر شد، به ردیف بعدی میرویم
col = 0
row += 1
مرحله ۴: تنظیمات نهایی و اجرای برنامه
در نهایت، نیاز داریم که پنجره اصلی را به درستی تنظیم کنیم و اطمینان حاصل کنیم که دکمه ها و نمایشگر به درستی نمایش داده می شوند.
# تنظیمات نهایی
for i in range(4):
root.grid_columnconfigure(i, weight=1)
for i in range(5):
root.grid_rowconfigure(i, weight=1)
# اجرای حلقه اصلی برنامه
root.mainloop()
در این کد، ما ستون ها و ردیف های پنجره را به گونه ای تنظیم کرده ایم که دکمه ها و نمایشگر به درستی در پنجره قرار بگیرند.
در این آموزش، ما یک ماشین حساب گرافیکی ساده با استفاده از پایتون و Tkinter ایجاد کردیم. این پروژه به شما کمک می کند تا با مفاهیم اولیه ساخت رابط کاربری گرافیکی در پایتون آشنا شوید. شما می توانید این پروژه را توسعه دهید و ویژگی های بیشتری مانند پشتیبانی از عملیات های پیشرفته تر، تغییر تم و غیره به آن اضافه کنید.
امیدواریم این آموزش برای شما مفید بوده باشد. اگر سوالی دارید یا نیاز به راهنمایی بیشتری دارید، در بخش نظرات با ما در میان بگذارید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.