نحوه ساخت ماشین حساب در Tkinter

پایتون ابزارهای زیادی برای علم داده ، توسعه وب و توسعه اندروید ارائه می دهد. اما یکی از بهترین ابزارها در زمینه زبان برنامه نویسی پایتون ، Tkinter for Graphical User Interface است. کتابخانه Tkinter در پایتون ابزارک های GUI را ارائه می دهد که به ایجاد برنامه های کاربر پسند کمک می کند. استفاده از Tkinter آسان ، سبک و سریع است. لازم نیست Tkinter را به صراحت نصب کنید زیرا از قبل با پایتون نصب شده است.

قبل از ادامه این آموزش ، باید اصول اولیه بسته Tkinter را در پایتون بدانید.

تنظیمات اولیه برای برنامه

1. وارد کردن ماژول

اولین قدم برای ساختن برنامه ، وارد کردن ماژول است. هنگام وارد کردن ماژول Tkinter ، باید شیء ttk را مثال بزنید .

 import tkinter as ttk

2. ایجاد متغیر پنجره

برای ایجاد یک پنجره ، باید یک شیء پنجره با استفاده از ttk ایجاد کنید. پس از ایجاد یک شیء پنجره ، می توانید عنوان و هندسه را به پنجره اختصاص دهید. هندسه ارتفاع و عرض پنجره را تنظیم می کند.

 win = ttk.Tk()
win.title('Simple Calculator')
win.geometry('500x500')

3. MainLoop

متد mainloop () پنجره را در یک حلقه بی نهایت اجرا می کند. به طور مداوم اجرا می شود مگر اینکه کاربر پنجره را به صورت دستی ببندد.

 win.mainloop()

مطالب مرتبط: شروع به ایجاد برنامه های رومیزی در پایتون با کتابخانه رابط کاربری Tkinter کنید

ساخت UI

بسته Tkinter در پایتون دارای ویجت های زیادی است که به طراحی های کاربر پسند کمک می کند. ابزارک های مورد استفاده در این پروژه زمینه های دکمه و متن هستند. برای این پروژه، شما نیاز به دکمه های زیر: 0-9 اعداد، اضافه کردن، تفریق، ضرب، تقسیم، روشن، حذف، محاسبه.

 oneButton = ttk.Button(win, text="1", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(1))
oneButton.grid(row=2, column=0,padx=2, pady=3)
twoButton = ttk.Button(win, text="2", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(2))
twoButton.grid(row=2, column=1, padx=2, pady=3)
threeButton = ttk.Button(win, text="3", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(3))
threeButton.grid(row=2, column=2, padx=2, pady=3)
plusButton = ttk.Button(win, text="+", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq("+"))
plusButton.grid(row=2, column=3, padx=2, pady=3)
# div 2
fourButton = ttk.Button(win, text="4", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(4))
fourButton.grid(row=3, column=0, padx=2, pady=3)
fiveButton = ttk.Button(win, text="5", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(5))
fiveButton.grid(row=3, column=1, padx=2, pady=3)
sixButton = ttk.Button(win, text="6", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(6))
sixButton.grid(row=3, column=2, padx=2, pady=3)
minusButton = ttk.Button(win, text="-", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq("-"))
minusButton.grid(row=3, column=3, padx=2, pady=3)
# div 3
sevenButton = ttk.Button(win, text="7", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(7))
sevenButton.grid(row=4, column=0, padx=2, pady=3)
eightButton = ttk.Button(win, text="8", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(8))
eightButton.grid(row=4, column=1, padx=2, pady=3)
nineButton = ttk.Button(win, text="9", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(9))
nineButton.grid(row=4, column=2, padx=2, pady=3)
muxButton = ttk.Button(win, text="x", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq("*"))
muxButton.grid(row=4, column=3, padx=2, pady=3)
#div 4
zeroButton = ttk.Button(win, text="0", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq(0))
zeroButton.grid(row=5, column=0, padx=2, pady=3)
clearButton = ttk.Button(win, text="clr", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=clearInput)
clearButton.grid(row=5, column=1, padx=2, pady=3)
calculateButton = ttk.Button(win, text="cal", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=calculateEq)
calculateButton.grid(row=5, column=2, padx=2, pady=3)
divideButton = ttk.Button(win, text="/", pady=10, padx=20, font = "Serif 15",bg = "black", fg = "white", command=lambda: addToEq("/"))
divideButton.grid(row=5, column=3, padx=2, pady=3)

ویجت دکمه بسیاری از آرگومان ها را می پذیرد: شیء پنجره ، متن نمایش داده شده بر روی دکمه ، سبک فونت و غیره همچنین یک آرگومان فرمان را می پذیرد که هنگام کلیک روی دکمه یک تابع یا متدی را اجرا می کند.

برای تراز کردن دکمه ها در سطرها و ستون ها برای رابط کاربر پسند ، از ویژگی grid استفاده کنید. ویژگی grid تعداد سطر و شماره ستون را به عنوان آرگومان می پذیرد تا دکمه ها مطابق با آن تراز شوند.

 numericEq = ttk.StringVar()
dataField = ttk.Entry(win, textvariable=numericEq, font="Serif 15")
dataField.grid(row=0,columnspan=3, ipadx=80, ipady=15)

ویجت Entry کادر متنی در بسته Python Tkinter است. معمولاً فیلد Entry استدلال های زیادی را می پذیرد ، اما یکی از مهمترین و ضروری ترین استدلال ها متغیر متنی است . به دلیل این استدلال ، کاربر می تواند در قسمت Entry تایپ کند. در کد بالا ، یک متغیر به نام numericEq یک ویژگی ttk.StringVar () برای مدیریت ویجت Entry اختصاص داده است.

مطالب مرتبط: یادگیری پایتون؟ در اینجا نحوه مدیریت رشته ها آمده است

می توانید فایل پایتون را با استفاده از دستور python file_name.py اجرا کنید . ظاهر برنامه به این شکل است:

افزودن قابلیت به دکمه ها:

همانطور که قبلاً اشاره کردیم ، ویجت Button دارای یک ویژگی فرمان است که یک تابع یا متدی را می خواند که فراخوانی می شود. روش هایی که هنگام کلیک روی دکمه ها استفاده می شوند از عملکرد lambda استفاده می کنند .

1. دکمه های عددی و حسابی

دکمه های عددی شامل مقادیر 0-9 و دکمه های حسابی +، -، x ، / برای اهداف محاسبه هستند.

متد addToEq () با کلیک روی دکمه فراخوانی می شود. این روش بسته به دکمه ای که روی آن کلیک می کنید اعداد یا عملگرهای حسابی را منتقل می کند. پس از انتقال مقدار ، اعداد یا عملگرها در متغیر calcValue ذخیره می شوند. قبل از ذخیره مقدار یا عملگر در متغیر calcValue ، باید آن را با استفاده از متد str () به نوع رشته تبدیل کنید.

 def addToEq(x):
calcValue = calcValue + str(x)
numericEq.set(calcValue)

2. محاسبه دکمه ها

دکمه با برچسب cal کل رشته ذخیره شده در متغیر calcValue را محاسبه می کند. تابع eval () به انجام عملیات حسابی بر روی متغیر calcValue و بازگشت کل کمک می کند. پس از بازیابی مقدار ، مقدار کل را در متغیر numericEq تنظیم کنید . متغیر numericEq این مقدار را در کادر Entry نمایش می دهد.

 def calculateEq():
total = str(eval(calcValue))
numericEq.set(total)

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

دکمه روشن شده جعبه ورود. با کلیک روی دکمه پاک کردن ، روش () clearInput فراخوانی می شود. متغیر calcValue روی یک رشته خالی تنظیم شده است و در کادر ورود ذخیره می شود.

 def clearInput():
calcValue = ""
numericEq.set("")

پس از پیاده سازی همه این روش ها ، خروجی کد به شکل زیر است:

پروژه ها بهترین راه برای بهبود مهارت های برنامه نویسی شما هستند

اکنون که یاد گرفته اید چگونه یک ماشین حساب ساده با استفاده از GUI در Python Tkinter بسازید ، زمان آن فرا رسیده است که سایر بسته های پایتون را نیز کاوش کنید. پایتون دارای بسته های متنوعی است که به شما کمک می کند هر برنامه ای را که می توانید رویای آن را بسازید ، بسازید.

همانطور که احتمالاً می دانید ، پروژه ها بهترین راه برای نشان دادن مهارت های شما هستند. پروژه های ساختمانی به شما کمک می کند تا درک خوبی از زبان داشته باشید و رزومه خود را بسازید.