مهارت های Python Tkinter خود را با این پروژه مبتدی بهبود بخشید.
پایتون ابزارهای زیادی برای علوم داده، وب و توسعه اندروید فراهم می کند. اما یکی از بهترین ابزارها در مورد زبان برنامه نویسی پایتون Tkinter برای رابط کاربری گرافیکی است. کتابخانه Tkinter در پایتون ویجت های رابط کاربری گرافیکی را ارائه می دهد که به ایجاد برنامه های کاربر پسند کمک می کند. Tkinter آسان برای استفاده، سبک وزن و سریع است. لازم نیست Tkinter را به صراحت نصب کنید زیرا با پایتون از قبل نصب شده است.
قبل از ادامه این آموزش، باید اصول بسته Tkinter در پایتون را بدانید.
راه اندازی اولیه برای برنامه
1. وارد کردن ماژول
اولین قدم برای ساخت اپلیکیشن، وارد کردن ماژول است. هنگام وارد کردن ماژول Tkinter، باید شی ttk را نمونه برداری کنید.
import tkinter as ttk
2. ایجاد متغیر Window
برای ایجاد یک پنجره، باید یک شی پنجره با استفاده از ttk ایجاد کنید. پس از ایجاد یک شی پنجره، می توانید یک عنوان و هندسه به پنجره اختصاص دهید. هندسه ارتفاع و عرض پنجره را تنظیم می کند.
win = ttk.Tk()
win.title('Simple Calculator')
win.geometry('500x500')
3. حلقه اصلی
متد mainloop() پنجره را در یک حلقه بی نهایت اجرا می کند. به طور مداوم اجرا می شود مگر اینکه کاربر پنجره را به صورت دستی ببندد.
win.mainloop()
مرتبط: شروع به ایجاد برنامه های دسکتاپ در پایتون با کتابخانه Tkinter GUI
ساخت رابط کاربری
بسته 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 دارای یک ویژگی فرمان است که تابع یا متدی را برای فراخوانی می پذیرد. روش هایی که با کلیک روی دکمه ها منتقل می شوند از تابع لامبدا استفاده می کنند.
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. دکمه پاک کردن
دکمه پاک کردن، کادر Entry را پاک می کند. با کلیک بر روی دکمه clear، متد clearInput() فراخوانی می شود. متغیر calcValue روی یک رشته خالی تنظیم می شود و در کادر Entry ذخیره می شود.
def clearInput():
calcValue = ""
numericEq.set("")
هنگامی که تمام این روش ها را پیاده سازی کردید، خروجی کد به شکل زیر است:
پروژه ها بهترین راه برای بهبود مهارت های کدنویسی شما هستند
اکنون که یاد گرفتید چگونه یک ماشین حساب ساده با استفاده از رابط کاربری گرافیکی در Python Tkinter بسازید، وقت آن رسیده است که سایر بسته های پایتون را بررسی کنید. پایتون بستههای متنوعی دارد که به شما کمک میکند هر برنامهای را که میتوانید رویاپردازی کنید بسازید.
همانطور که احتمالاً می دانید، پروژه ها بهترین راه برای نشان دادن مهارت های شما هستند. پروژه های ساختمانی به شما کمک می کند زبان را به خوبی درک کنید و رزومه خود را بسازید.