آموزش ساخت ماشین‌ حساب ساده و گرافیکی با پایتون
آموزش ها
دوشنبه 17 اردیبهشت 1403
جهت مطالعه این مقاله به 10 دقیقه زمان نیاز دارید
آنچه در این مقاله خواهیم خواند:

مقدمه:

در این مقاله به آموزش ساخت ماشین حساب با پایتون می پردازیم و همچنین کد ساخت ماشین‌حساب با پایتون را خط به خط بررسی می‌کنیم تا ببینیم چگونه این ماشین‌حساب ساخته شده است.

پیش‌نیازها:

 

نصب پایتون: 

برای ساخت ماشین حساب ساده با پایتون به یک نسخه نصب شده از پایتون 3 نیاز دارید.

نصب کتابخانه tkinter : یک کتابخانه استاندارد پایتون برای ساخت رابط کاربری گرافیکی است پس برای آموزش ساخت ماشین‌حساب گرافیکی با پایتون از این کتابخانه استفاده میکنیم. برای نصب tkinter می‌توانید از دستور زیر در خط فرمان استفاده کنید:

pip install tkinter

معرفی کتابخانه tkinter:

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

مزایای استفاده از tkinter:

سادگی :tkinter دارای API ساده و قابل فهمی است که یادگیری آن را برای مبتدیان آسان می‌کند.

انعطاف‌پذیری : tkinter طیف گسترده‌ای از ویجت‌ها را برای ساخت رابط‌های کاربری پیچیده ارائه می‌دهد.

پلتفرم‌محور : tkinter بر روی سیستم‌عامل‌های مختلف مانند ویندوز، لینوکس و macOS قابل اجرا است.

رایگان و منبع باز : tkinter یک کتابخانه رایگان و منبع باز است که می‌توانید به طور آزادانه از آن استفاده و توزیع کنید.

کاربردهای tkinter:

tkinter برای ساخت انواع مختلف برنامه‌های GUI مانند:

ساخت ماشین حساب با پایتون: ساخت ماشین حساب‌های ساده و پیچیده با استفاده از tkinter آسان است.

بازی: tkinter می‌تواند برای ساخت بازی‌های ساده و سرگرم‌کننده استفاده شود.

برنامه‌های کاربردی: tkinter برای ساخت برنامه‌های کاربردی مختلف مانند ویرایشگر متن، دفترچه یادداشت و برنامه‌های مدیریت فایل استفاده می‌شود.

بنابراین برای ساخت اپلیکیشن ماشین حساب با پایتون استفاده از کتابخانه tkinter میتواند به ما کمک کند.

شروع کار با tkinter:

مراحل ساخت:

ایجاد یک فایل جدید: یک فایل جدید با نام دلخواه خود (مثلاً calculator.py) ایجاد کنید.

وارد کردن کتابخانه tkinter:  در ابتدای فایل خود، کتابخانه tkinter را با استفاده از کد زیر وارد کنید:

from tkinter import *

تعریف توابع:

در ادامه اموزش ساخت ماشین حساب گرافیکی با پایتون ، چند تابع برای انجام وظایف مختلف ماشین حساب تعریف می‌کنیم.

تابع click() : این تابع هنگامی که روی یک دکمه عدد کلیک می‌شود، فراخوانی می‌شود. مقدار  x  عددی است که روی دکمه نوشته شده است. این تابع مقدار فعلی روی صفحه نمایش (که در متغیر final ذخیره شده) را به عنوان یک رشته درنظر گرفته و عدد x را به انتهای آن اضافه می‌کند. در نهایت خروجی این رشته به متغیر  input_text  اختصاص داده می‌شود تا روی صفحه نمایش به‌روز شود.

def click(x):

    global final

    final = str(final) + str(x)

    input_text.set(final)


 

تابع equal () : این تابع زمانی که دکمه “=” کلیک شود اجرا می‌شود. مقدار final که یک رشته حاوی عبارت محاسباتی است، با استفاده از تابع eval ارزیابی شده و نتیجه محاسبه به عنوان یک عدد، دوباره به final اختصاص داده می‌شود. سپس این مقدار به input_text تخصیص داده شده تا روی صفحه نمایشگر نشان داده شود.

def equal():

    global final

    final = eval(final)

    input_text.set(final)


 

تابع clear () :  این تابع هنگامی که دکمه “AC” فشار داده شود، فراخوانی شده و باعث پاک شدن صفحه نمایش می‌شود. با مقداردهی خالی به final و input_text این کار انجام می‌شود.

def clear():

    global final

    final = ''

    input_text.set('')

2. ساخت رابط کاربری:

در این قسمت از اموزش ساخت ماشین‌حساب با پایتون شروع به راه اندازی رابط کاربری میکنیم. با استفاده از root = Tk() پنجره اصلی برنامه ساخته می‌شود.

عنوان پنجره با root.title("ماشین‌حساب") تنظیم می‌شود.

سپس یک فریم (Frame) با نام frm ساخته می‌شود که به عنوان ظرفی برای قرار دادن عناصر دیگر رابط کاربری عمل می‌کند. رنگ این فریم با bg='#212529' به طوسی تیره تنظیم شده است.

برای نمایش اعداد و عبارات روی صفحه نمایش، از یک متغیر رشته‌ای به نام input_text استفاده می‌شود.

متغیر دیگری به نام final تعریف می‌شود که در ابتدا مقدار خالی دارد و در طول برنامه برای ذخیره عبارت تایپ شده توسط کاربر استفاده می‌شود.

root = Tk()

root.title("Calculator")


 

frm = Frame(root, bg='#212529')


 

input_text = StringVar()


 

final = ''


 

با استفاده از ent = Entry(frm, ... ) یک عنصر Entry ساخته می‌شود. این عنصر یک کادر متنی است که برای نمایش خروجی ماشین حساب به کار می‌رود. ویژگی‌های Entry مانند تعداد کاراکتر قابل نمایش، تراز متن (center) و فونت آن نیز تنظیم شده است.

ent = Entry(frm, width=30, justify='center', font=('', 20), textvariable=input_text)


 

3. ساخت دکمه‌ها:

در بخش بعدی برای ساخت ماشین حساب با پایتون باید دکمه ها ساخته شوند. برای هر دکمه از عنصر Button استفاده شده است. ویژگی‌های دکمه‌ها شامل متن، فونت، اندازه و رنگ پس‌زمینه (برای تمایز دکمه‌های عملیات) تنظیم شده است.

به هر دکمه یک فرمان (command) اختصاص داده شده است. این فرمان با استفاده از lambda تعریف می‌شود و تابع click(x) را برای دکمه‌های عددی، equal برای دکمه “=” و clear را برای دکمه “AC” فراخوانی می‌کند.


 

4. چیدمان رابط کاربری:

در نهایت با استفاده از متدهای grid و pack عناصر رابط کاربری (صفحه نمایش و دکمه‌ها) را در جایگاه مناسب خود درون Frame قرار می‌دهیم.

 

btn7 = Button(frm, text='7', font=('', 20), width=5, height=2, command=lambda: click(7))

btn8 = Button(frm, text='8', font=('', 20), width=5, height=2, command=lambda: click(8))

btn9 = Button(frm, text='9', font=('', 20), width=5, height=2, command=lambda: click(9))

btnMulti = Button(frm, text='*', font=('', 20), width=5, height=2, bg='#aaffaa', command=lambda: click('*'))

 

btn4 = Button(frm, text='4', font=('', 20), width=5, height=2, command=lambda: click(4))

btn5 = Button(frm, text='5', font=('', 20), width=5, height=2, command=lambda: click(5))

btn6 = Button(frm, text='6', font=('', 20), width=5, height=2, command=lambda: click(6))

btnDiv = Button(frm, text='/', font=('', 20), width=5, height=2, bg='#aaffaa', command=lambda: click('/'))

 

btn1 = Button(frm, text='1', font=('', 20), width=5, height=2, command=lambda: click(1))

btn2 = Button(frm, text='2', font=('', 20), width=5, height=2, command=lambda: click(2))

btn3 = Button(frm, text='3', font=('', 20), width=5, height=2, command=lambda: click(3))

btnMinus = Button(frm, text='-', font=('', 20), width=5, height=2, bg='#aaffaa', command=lambda: click('-'))

 

btnAC = Button(frm, text='AC', font=('', 20), width=5, height=2, bg='#ffaaaa', command=clear)

btn0 = Button(frm, text='0', font=('', 20), width=5, height=2, command=lambda: click(0))

btnEQ = Button(frm, text='=', font=('', 20), width=5, height=2, bg='#aaffaa', command=equal)

btnPlus = Button(frm, text='+', font=('', 20), width=5, height=2, bg='#aaffaa', command=lambda: click('+'))


 

pack  برای قرار دادن Frame در پنجره اصلی به کار رفته است.

frm.pack()


 

grid  برای قرار دادن هر دکمه و صفحه نمایش در یک سلول مشخص از یک جدول فرضی درون Frame استفاده می‌شود. با تنظیمات row و column محل قرارگیری هر عنصر و با  padx  و  pady  میزان فاصله اطراف آن‌ها مشخص می‌شود.

ent.grid(row= 0, column=0, columnspan=4, padx=10, pady=10)

 

btn7.grid(row=1, column=0, pady=10)

btn8.grid(row=1, column=1)

btn9.grid(row=1, column=2)

btnMulti.grid(row=1, column=3)

 

btn4.grid(row=2, column=0, pady=10)

btn5.grid(row=2, column=1)

btn6.grid(row=2, column=2)

btnDiv.grid(row=2, column=3)

 

btn1.grid(row=3, column=0, pady=10)

btn2.grid(row=3, column=1)

btn3.grid(row=3, column=2)

btnMinus.grid(row=3, column=3)

 

btnAC.grid(row=4, column=0, pady=10)

btn0.grid(row=4, column=1)

btnEQ.grid(row=4, column=2)

btnPlus.grid(row=4, column=3)

 

5. اجرای برنامه:

در ادامه ی آموزش ساخت برنامه ماشین حساب با پایتون با فراخوانی root.mainloop() برنامه اجرا شده و منتظر رویدادهای کاربر (کلیک روی دکمه‌ها) می‌ماند.

با اجرای این کد یک ماشین حساب گرافیکی ساده خواهید داشت که می‌توانید با کلیک روی اعداد و دکمه‌های عملیات، محاسبات مورد نظر خود را انجام دهید.

 

from tkinter import *

 

def click(x):

    global final

    final = str(final) + str(x)

    input_text.set(final)

    

def equal():

    global final

    final = eval(final)

    input_text.set(final)

    

def clear():

    global final

    final = ''

    input_text.set('')

 

root = Tk()

root.title("Calculator")

 

frm = Frame(root, bg='#212529')

 

input_text = StringVar()

 

final = ''

 

ent = Entry(frm, width=30, justify='center', font=('', 20), textvariable=input_text)

 

btn7 = Button(frm, text='7', font=('', 20), width=5, height=2, command=lambda: click(7))

btn8 = Button(frm, text='8', font=('', 20), width=5, height=2, command=lambda: click(8))

btn9 = Button(frm, text='9', font=('', 20), width=5, height=2, command=lambda: click(9))

btnMulti = Button(frm, text='*', font=('', 20), width=5, height=2, bg='#aaffaa', command=lambda: click('*'))

 

btn4 = Button(frm, text='4', font=('', 20), width=5, height=2, command=lambda: click(4))

btn5 = Button(frm, text='5', font=('', 20), width=5, height=2, command=lambda: click(5))

btn6 = Button(frm, text='6', font=('', 20), width=5, height=2, command=lambda: click(6))

btnDiv = Button(frm, text='/', font=('', 20), width=5, height=2, bg='#aaffaa', command=lambda: click('/'))

 

btn1 = Button(frm, text='1', font=('', 20), width=5, height=2, command=lambda: click(1))

btn2 = Button(frm, text='2', font=('', 20), width=5, height=2, command=lambda: click(2))

btn3 = Button(frm, text='3', font=('', 20), width=5, height=2, command=lambda: click(3))

btnMinus = Button(frm, text='-', font=('', 20), width=5, height=2, bg='#aaffaa', command=lambda: click('-'))

 

btnAC = Button(frm, text='AC', font=('', 20), width=5, height=2, bg='#ffaaaa', command=clear)

btn0 = Button(frm, text='0', font=('', 20), width=5, height=2, command=lambda: click(0))

btnEQ = Button(frm, text='=', font=('', 20), width=5, height=2, bg='#aaffaa', command=equal)

btnPlus = Button(frm, text='+', font=('', 20), width=5, height=2, bg='#aaffaa', command=lambda: click('+'))

 

frm.pack()

 

ent.grid(row= 0, column=0, columnspan=4, padx=10, pady=10)

 

btn7.grid(row=1, column=0, pady=10)

btn8.grid(row=1, column=1)

btn9.grid(row=1, column=2)

btnMulti.grid(row=1, column=3)

 

btn4.grid(row=2, column=0, pady=10)

btn5.grid(row=2, column=1)

btn6.grid(row=2, column=2)

btnDiv.grid(row=2, column=3)

 

btn1.grid(row=3, column=0, pady=10)

btn2.grid(row=3, column=1)

btn3.grid(row=3, column=2)

btnMinus.grid(row=3, column=3)

 

btnAC.grid(row=4, column=0, pady=10)

btn0.grid(row=4, column=1)

btnEQ.grid(row=4, column=2)

btnPlus.grid(row=4, column=3)

 

root.mainloop()

 

نتیجه‌گیری:

در این مقاله، نحوه ساخت یک ماشین حساب گرافیکی ساده با استفاده از کتابخانه tkinter در پایتون را آموزش دادیم. با استفاده از tkinter می‌توانید رابط‌های کاربری گرافیکی ساده و پیچیده را به راحتی طراحی و پیاده‌سازی کنید.

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

شما می‌توانید با اضافه کردن توابع جدید، رابط کاربری و ویژگی های ماشین حساب خود را ارتقا دهید. برای مثال، می‌توانید امکان انجام محاسبات پیچیده‌تر، ذخیره و بازیابی نتایج، و یا استفاده از توابع ریاضی پیشرفته را به ماشین حساب خود اضافه کنید.


 

همچنین در ادامه بخوانید:
اسکرچ (Scratch) چیست؟ هدف طراحی زبان برنامه نویسی اسکرچ
اسکرچ (Scratch) چیست؟ هدف طراحی زبان برنامه نویسی اسکرچ
ممکن است نام اسکرچ (Scratch) را اخیرا زیاد شنیده باشید و بپرسید که اسکرچ چیست؟ زبان اسکرچ، یک زبان برنامه نویسی سطح بالاست که توسط دانشگاه MIT توسعه داده شده و برای برنامه نویسی در این زبان از ساختار بلوکی استفاده می‌شود. این زبان برنامه نویسی برای بیش از ۷۰ زبان مختلف از جمله فارسی ترجمه شده و در این زبان‌ها قابل استفاده است.
آموزش دانلود و نصب اسکرچ
آموزش دانلود و نصب اسکرچ
امروزه یکی از محبوب‌ترین برنامه‌های ساخت بازی و انیمیشن در بین کودکان و نوجوانان برنامه اسکرچ است. این برنامه قدرتمند می‌تواند به راحتی مورد استفاده قرار بگیرد. در این مقاله قصد داریم تا با آموزش دانلود و نصب آن آشنا شویم. بد نیست در ابتدا کمی درباره اینکه اسکرچ چیست و در مورد سازنده آن نیز اطلاعات به دست بیاوریم.
سایت اسکرچ؛ آشنایی کامل با سایت Scratch Junior و نحوه ورود به سایت
سایت اسکرچ؛ آشنایی کامل با سایت Scratch Junior و نحوه ورود به سایت
در این مقاله به آشنایی با سایت اسکرچ و نحوه ورود به آن میپردازیم