در این مقاله سعی داریم به آموزش کلی آموزش pyqt5 و همچنین آموزش نوشتن یک ماشین حساب ساده بپردازیم. اگر به حوزه برنامهنویسی علاقهمند هستید حتما اسم زبان برنامهنویسی پایتون را شنیدهاید. این زبان برنامهنویسی به دلیل ساده بودن و نوشتار آسان توانسته در مدت زمان فعالیت خود طرفداران بسیار زیادی را جذب کند. همچنین زبان پایتون رتبه دوم در دنیا را به لحاظ محبوبیت به دست آورده است. البته این رتبه بر اساس میزان جستجو اسم این زبان در موتورهای جستجو تعیین میشود.
اگر علاقهمند به کدنویسی در این زبان برنامهنویسی هستید قطعا میدانید که هر زبان برنامهنویسی احتیاج به کتابخانههایی دارد که از طریق آن بتوان نرمافزارهای گرافیکی متعددی را طراحی و تولید کرد. قطعا پایتون هم چنین کتابخانههایی را در دسترس عموم قرار داده است. از جمله اصلیترین آنها pyqt است. البته کتابخانههای دیگری هم مانند Tkinter وجود دارند که استفاده از آنها خالی از لطف نیست. در ادامه بیشتر با این کتابخانه و نحوه استفاده از آن آشنا خواهیم شد و همچنین نحوه استفاده از آن را میآموزیم. اگر علاقهمند به یادگیری این کتابخانه قدرتمند هستید با ما در این مقاله همراه باشید.
چرا آموزش pyqt5 را انتخاب کردهایم؟
همانطور که گفته شد استفاده از این کتابخوانه قدرتمند میتواند تا حد بسیار زیادی به شما در ایجاد پروژههای گرافیکی کمک کند. این کتابخوانه قدرتمند در حقیقت مانند یک چاقوی همه کار برایتان عمل میکند. تقریبا میتواند هر برنامه دلخواهی را با استفاده از کتابخانه pyqt5 تولید کرد. در ابتدا بسیاری زبان برنامهنویسی پایتون را چندان جدی نمیگرفتند اما با روی کار آمدن کتابخانههای قدرتمند این زبان پیشرفتهای جالبی ایجاد شد. PyQt که توسط Riverbank Computing ایجاد شده است، یک نرم افزار رایگان (دارای مجوز GPL) است و از سال 1999 در حال توسعه است. PyQt5 در سال 2016 منتشر شد و آخرین بار در اکتبر 2021 به روز شد.
بهترین راه برای یادگیری استفاده از فیلم آموزشی است. قطعا استفاده از فیلم آموزشی میتواند تا حد بسیار زیادی سرعت آموزش را افزایش دهد. از این رو فرادرس در چند سال گذشته سعی داشته با ارائه بهترین فیلمهای آموزشی به دانشجویان و دانش آموزان تا حد ممکن کمک کند. اگر علاقهمند به استفاده از فیلمهای آموزشی این مجموعه هستید بهتر است همین حالا به این مرجع کامل آموزشی مراجعه کنید.
- آموزش برنامه نویسی پایتون Python – مقدماتی
- آموزش نصب PyQt5 در پایتون (رایگان)
استفاده از Pyqt چه مزایایی میتواند داشته باشد؟
استفاده کردن از این ماژول میتواند مزایا بسیار زیادی را برای شما به همراه داشته باشد. در ادامه مقاله آموزش pyqt5 به مزایا این کتابخانه قدرتمند خواهیم پرداخت.
دسترسی به بیش از 1000 کلاس
بعد از نصب پایکیوت و استفاده از آن در پروژه خودتان میتوانید به بیش از 1000 کلاس مختلف دسترسی داشته باشید و از آنها در پروژه مورد نظر خودتان استفاده کنید. این موضوع یک مزیت بسیار بزرگ محسوب میشود و میتواند قدرت شما را در انجام پروژهتان افزایش دهد. دسترسی داشتن به کلاسهای مختلف میتواند قابلیتهای مختلفی را به برنامهتان اضافه کند.
از آنجایی که معمولا با استفاده از این کتابخانه برنامههای تحت دسکتاپ تولید میشود قطعا شما هم به کتابخانههای قدرتمندی در این حوزه برای ایجاد برنامههای حرفهای خودتان احتیاج خواهید داشت.
سازگاری با فریمورکهای مختلف
نکته دوم سازگار بودن این کتابخانه با فریمورکهای مختلف است. اگر قبلا با زبانهای برنامهنویسی دیگری کار کرده باشید قطعا این خصوصیت را در زبان جاوا مشاهده کردهاید. در جاوا شما میتوانستید به راحتی از سیستمعامل ویندوز به لینوکس یا هر فریمورک دیگری بروید بدون این که نگران کد خودتان باشید. در Pyqt نیز همینطور است. حرکت کردن در بین پلتفرمهای مختلف بسیار مهم است و میتواند تا حد بسیار زیادی به شما در این حوزه کمک کند.
کاربر پسند بودن
یادگیری پایکیوت ممکن است کمی کند به نظر برسد اما خروجی مناسب و کاربرپسندی را در اختیار شما قرار میدهد. زیبایی یک اصل جدانشدنی برای تولید یک نرمافزار خوب است. بهتر است همیشه یک رابط کاربری حرفهای را طراحی کنید تا بهترین خروجیهای ممکن را داشته باشید. اگر به دنبال یک کتابخانه با چنین ویژگیهایی هستید قطعا pyqt5 بسیار برای شما مناسب است.
دسترسی به ابزارهای متنوع
با نصب کردن پایکیوت قطعا به ابزارهای متنوع و زیادی دسترسی خواهید داشت که دسترسی به آنها خالی از لطف نیست. این ابزارها بسیار با محیطهای مختلف سازگار هستند و میتوانید با تهیه خروجی مناسب در سیستمعاملها و فریمورکهای مختلفی از آنها استفاده کنید. قطعا استفاده از این ابزارها میتواند قابلیتهای شگفتانگیزی را به برنامه شما بدهد.
امکان کدنویسی سریعتر نسبت به سایر زبانها
اگر تا به حال با زبان جاوا یا سی پلاس پلاس کدنویسی کرده باشید میدانید که کار کردن با این زبانها بسیار مشکل است. در چنین زبانهایی شما مجبور هستید که کدهای اضافی زیادی را بزنید و این موضوع وقت زیادی را از شما تلف میکند. استفاده از زبان پایتون و همچنین کتابخانه پایکیوت این مشکل را به کلی حل میکند و به شما قدرت زیادی در کدنویسی و صرفهجویی در زمان میدهد.
پیشنیازهای یادگیری pyqt5
تا این بخش از مقاله آموزش pyqt5 به طور کلی با این کتابخانه قدرتمند و همچنین مزایا استفاده از آن آشنا شدیم. قطعا استفاده از این کتابخانه میتواند به شما قدرت بسیار زیادی در کدنویسی بدهد. اما استفاده از چنین کتابخانه قدرتمندی قطعا نیازمند به یک سری پیشنیاز بسیار مهم است. بسیار مهم است که به این پیشنیازها توجه ویژهای را داشته باشید و تمام تلاش خودتان را برای به دست آوردن این تواناییها به کار بگیرید. این پیش نیازها عبارتاند از:
تسلط کامل به زبان پایتون
همانطور که گفته شد کتابخانه پایکیوت برای زبان برنامهنویسی پایتون نوشته شده است. پس باید برای استفاده از آن به زبان برنامهنویسی پایتون تسلط کاملی را داشته باشید. به عنوان مثال در بخش شیگرا خبره باشید یا بتوانید به خوبی مثالهای مختلف زبان پایتون را حل کنید. این مسئله بسیار مهم است و میتواند موجب افزایش توانایی شما در حوزه این زبان برنامهنویسی شود. مهمترین بخش تسلط شما به زبان پایتون در بخش شیگرایی خلاصه میشود.
شما باید قبل از شروع یادگیری پایکیوت مباحث مختلف شیگرایی را به خوبی آموزش دیده باشید.
داشتن تفکر منطقی
البته این مورد یک پیشنیاز برای شروع برنامهنویسی نیز به حساب میآید. شما باید از تفکر منطقی لازم در حوزه برنامهنویسی برخوردار باشید تا بتوانید به خوبی از پس مسائل مختلفی که در طول کار به آنها برخورد میکنید بر بیایید. به عنوان مثال شما باید بتوانید برنامهای بنویسید که اعداد اول را چاپ کند. قطعا الگوریتم چنین مسئلهای بسیار ساده است اما اگر به درستی برنامهنویسی را یاد نگرفته باشید میتواند بسیار مشکل باشد. معمولا چنین مهارتهایی به راحتی و تنها با تمرین مداوم داشتن به دست میآید. اگر شما هم علاقهمند به چنین مسائلی هستید بهتر است هر چه سریعتر دست به کد شوید.
داشتن پشتکار کافی
قطعا داشتن پشتکار در هر رشته و تخصصی یک اصل اساسی محسوب میشود. این مورد در یادگیری پایکیوت بسیار بولد میشود و نمیتوان به راحتی از آن گذر کرد. داشتن پشتکار در هنگام گذراندن آموزش pyqt5 از این رو مهم است که باید مدت زمان طولانی را برای یادگیری و تسلط به این کتابخانه بگذرانید. قطعا یادگیری پایکیوت کار مشکلی است و در مدت زمان کوتاهی تمام نمیشود. البته لازم به ذکر است که مدت زمان یادگیری برنامهنویسی کاملا به توانایی خود شما وابسته است.
داشتن ذوق گرافیکی
از آنجایی که پایکیوت یک کتابخانه برای نوشتن رابط گرافیکی است بسیار مهم است که شما از ذوق گرافیکی و هنری لازم برخوردار باشید. در صورتی که به چنین مسائلی علاقهمند نیستید بهتر است که با یک گرافیست در این حوزه صحبت کنید و طراحیهای گرافیکی را به او بسپارید. قطعا زیبایی ظاهری برنامه اهمیت بسیار زیادی دارد.
علاقه داشتن به تمرین روزانه
در هنگام یادگیری پایکیوت نیاز است که به صورت روزانه تمرین کنید و نباید در هنگام یادگیری تمرین خودتان را قطع کنید. اگر انسان منظم و سختکوشی نیستید قطعا پایکیوت برای شما مناسب نیست. بهتر است این عادت را در خودتان ایجاد کنید که به صورت روزانه به تمرین مباحثی که از این کتابخانه آموختهاید بپردازید. تمرین روزانه اولین پیشنیاز برای یادگیری پایکیوت و همچنین کدنویسی است.
شروع آموزش pyqt5
در این بخش از آموزش pyqt5 قصد داریم به طور کلی به نحوه کدنویسی در این کتابخانه قدرتمند بپردازیم. pyqt5 به عنوان یک مجموعه گسترده از ماژولها در پایتون پیادهسازی شده است. این مجموعه بزرگ بیش از 620 کلاس و 6000 تابع و متد دارد. قطعا پایکیوت یک جعبه ابزار چند پلتفرمی است که بر روی تمام سیستم عاملهای اصلی از جمله یونیکس، ویندوز و سیستم عامل مک اجرا میشود. استفاده از این ابزار قدرتمند از نصب آن شروع میشود.
نحوه نصب pyqt5 بر روی ویندوز
برای نصب این ماژول قدرتمند کافی است که مراحل زیر را طی کنید:
- اگر بر روی لینوکس هستید از کد زیر برای نصب آن در ترمینال استفاده کنید.
$ sudo pip3 install pyqt5 - اگر از سیستم عامل ویندوز استفاده میکنید هم میتوانید از کد زیر برای نصب ماژول پایکیوت استفاده کنید.
pip install pyqt5
- بعد از وارد کردن کدهای گفته شده در محیط ترمینال این ماژول قدرتمند شروع به نصب شدن میکند.
البته اگر در ویندوز نمیدانید که چطور باید محیط cmd استفاده کنید باید به شما بگویم که این کار بسیار ساده است. کافی است که دکمههای windows+r را بر روی صفحه کلید فشار دهید و سپس کلمه cmd را تایپ کنید. سپس کلید enter را فشار دهید تا این محیط برای شما باز شود.
نحوه کار کردن با QDate, QTime, QDateTime
pyqt5 کلاسهای QDate، QDateTime، QTime را برای کار با تاریخ و زمان ارائه کرده است. QDate کلاسی برای کار با تاریخ تقویم در تقویم میلادی است. این کلاس روشهای متعددی برای کار و مقایسه و همچنین دستکاری تاریخ را در اختیار کاربران قرار میدهد. کلاس QTime با ساعت ساعت کار میکند. همچنین روشهایی برای مقایسه زمان، تعیین زمان و روشهای مختلف دستکاری زمان دیگر ارائه میدهد. QDateTime کلاسی است که هر دو شی QDate و QTime را در یک شی ترکیب میکند. به مثال زیر توجه کنید:
#!/usr/bin/python from PyQt5.QtCore import QDate, QTime, QDateTime, Qt now = QDate.currentDate() print(now.toString(Qt.ISODate)) print(now.toString(Qt.DefaultLocaleLongDate)) datetime = QDateTime.currentDateTime() print(datetime.toString()) time = QTime.currentTime() print(time.toString(Qt.DefaultLocaleLongDate))
در خط اول کلاسهای مورد نیاز وارد برنامه شدهاند. در خط بعدی زمان فعالی و تاریخ در قالبهای مختلفی چاپ میشود. در خط بعدی متد currentDate تاریخ جاری را برمیگرداند. تاریخ در دو فرمت مختلف با پاس دادن مقادیر Qt.ISODate و Qt.DefaultLocaleLongDate به متد toString چاپ میشود. CurrentDateTime تاریخ و زمان فعلی را برمیگرداند.
خروجی کدها بالا به شکل زیر است:
$ ./current_date_time.py 2020-05-16 Saturday, May 16, 2020 Sat May 16 09:53:37 2020 9:53:37 AM CEST
مراحل نوشتن یک ماشین حساب در pyqt
تا این بخش از آموزش pyqt5 به طور کلی با نحوه کار کردن با این ماژول آشنا شدیم. قطعا استفاده از این کتابخانه قدرتمند میتواند بسیار لذتبخش باشد و قدرت بسیار زیادی را در کدنویسی به شما بدهد. قطعا نوشتن یک ماشینحساب ساده میتواند تا حد بسیار زیادی به شما در یادگیری کتابخانه pyqt کمک کند. قطعا همه ما حداقل یک بار با ماشین حساب ویندوز کار کردهایم. در این بخش میخواهیم یک ماشین حساب حرفهای همانند ویندوز طراحی کنیم.
مرحله اول پیادهسازی یک رابط گرافیکی
- یک label برای نمایش اعداد و خروجی ایجاد کنید و geometry آن را تنظیم کنید.
- متن label را از سمت راست تراز کنید و اندازه فونت آن را افزایش دهید.
- دکمههای فشاری برای اعداد از 0 تا 9 ایجاد کنید و هندسه آنها را به ترتیب مناسب تنظیم کنید.
- برای جمع، تفریق و غیره مثال دکمه فشاری اپراتور ایجاد کنید.
- یک افکت رنگ به دکمه برابر اضافه کنید تا آن را برجسته کند.
- آموزش رابط گرافیکی PyQt در پایتون Python — کلیک کنید
مراحل ایجاد کدهای Back End
- یک action برای دکمه مورد نظر ایجاد کنید.
- داخل اکشنهای هر دکمه به جز موارد برابر با عمل، متن برچسب را با شماره مربوطه یا عملگر اضافه کنید.
- برچسبها و بلوکهای مورد نیاز را اضافه کنید.
- در داخل بلوک try از روش eval بر روی متن برچسب برای دریافت ans استفاده کنید و پاسخ را روی برچسب تنظیم کنید.
- در یک بلوک Wrong Input را تنظیم کنید تا در صورت پیش آمدن چنین مسئلهای بتوانید به راحتی آن را تنظیم کنید.
- برای عمل حذف، آخرین کاراکتر را از label حذف کنید و برای عمل پاک، کل متن را خالی کنید.
کدنویسی موارد بالا به شکل زیر است:
# importing libraries
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
class Window(QMainWindow):
def __init__(self):
super().__init__()
# setting title
self.setWindowTitle(“Python “)
# setting geometry
self.setGeometry(100, 100, 360, 350)
# calling method
self.UiComponents()
# showing all the widgets
self.show()
# method for widgets
def UiComponents(self):
# creating a label
self.label = QLabel(self)
# setting geometry to the label
self.label.setGeometry(5, 5, 350, 70)
# creating label multi line
self.label.setWordWrap(True)
# setting style sheet to the label
self.label.setStyleSheet(“QLabel”
“{“
“border : 4px solid black;”
“background : white;”
“}”)
# setting alignment to the label
self.label.setAlignment(Qt.AlignRight)
# setting font
self.label.setFont(QFont(‘Arial’, 15))
# adding number button to the screen
# creating a push button
push1 = QPushButton(“1”, self)
# setting geometry
push1.setGeometry(5, 150, 80, 40)
# creating a push button
push2 = QPushButton(“2”, self)
# setting geometry
push2.setGeometry(95, 150, 80, 40)
# creating a push button
push3 = QPushButton(“3”, self)
# setting geometry
push3.setGeometry(185, 150, 80, 40)
# creating a push button
push4 = QPushButton(“4”, self)
# setting geometry
push4.setGeometry(5, 200, 80, 40)
# creating a push button
push5 = QPushButton(“5”, self)
# setting geometry
push5.setGeometry(95, 200, 80, 40)
# creating a push button
push6 = QPushButton(“5”, self)
# setting geometry
push6.setGeometry(185, 200, 80, 40)
# creating a push button
push7 = QPushButton(“7”, self)
# setting geometry
push7.setGeometry(5, 250, 80, 40)
# creating a push button
push8 = QPushButton(“8”, self)
# setting geometry
push8.setGeometry(95, 250, 80, 40)
# creating a push button
push9 = QPushButton(“9”, self)
# setting geometry
push9.setGeometry(185, 250, 80, 40)
# creating a push button
push0 = QPushButton(“0”, self)
# setting geometry
push0.setGeometry(5, 300, 80, 40)
# adding operator push button
# creating push button
push_equal = QPushButton(“=”, self)
# setting geometry
push_equal.setGeometry(275, 300, 80, 40)
# adding equal button a color effect
c_effect = QGraphicsColorizeEffect()
c_effect.setColor(Qt.blue)
push_equal.setGraphicsEffect(c_effect)
# creating push button
push_plus = QPushButton(“+”, self)
# setting geometry
push_plus.setGeometry(275, 250, 80, 40)
# creating push button
push_minus = QPushButton(“-“, self)
# setting geometry
push_minus.setGeometry(275, 200, 80, 40)
# creating push button
push_mul = QPushButton(“*”, self)
# setting geometry
push_mul.setGeometry(275, 150, 80, 40)
# creating push button
push_div = QPushButton(“/”, self)
# setting geometry
push_div.setGeometry(185, 300, 80, 40)
# creating push button
push_point = QPushButton(“.”, self)
# setting geometry
push_point.setGeometry(95, 300, 80, 40)
# clear button
push_clear = QPushButton(“Clear”, self)
push_clear.setGeometry(5, 100, 200, 40)
# del one character button
push_del = QPushButton(“Del”, self)
push_del.setGeometry(210, 100, 145, 40)
# adding action to each of the button
push_minus.clicked.connect(self.action_minus)
push_equal.clicked.connect(self.action_equal)
push0.clicked.connect(self.action0)
push1.clicked.connect(self.action1)
push2.clicked.connect(self.action2)
push3.clicked.connect(self.action3)
push4.clicked.connect(self.action4)
push5.clicked.connect(self.action5)
push6.clicked.connect(self.action6)
push7.clicked.connect(self.action7)
push8.clicked.connect(self.action8)
push9.clicked.connect(self.action9)
push_div.clicked.connect(self.action_div)
push_mul.clicked.connect(self.action_mul)
push_plus.clicked.connect(self.action_plus)
push_point.clicked.connect(self.action_point)
push_clear.clicked.connect(self.action_clear)
push_del.clicked.connect(self.action_del)
def action_equal(self):
# get the label text
equation = self.label.text()
try:
# getting the ans
ans = eval(equation)
# setting text to the label
self.label.setText(str(ans))
except:
# setting text to the label
self.label.setText(“Wrong Input”)
def action_plus(self):
# appending label text
text = self.label.text()
self.label.setText(text + ” + “)
def action_minus(self):
# appending label text
text = self.label.text()
self.label.setText(text + ” – “)
def action_div(self):
# appending label text
text = self.label.text()
self.label.setText(text + ” / “)
def action_mul(self):
# appending label text
text = self.label.text()
self.label.setText(text + ” * “)
def action_point(self):
# appending label text
text = self.label.text()
self.label.setText(text + “.”)
def action0(self):
# appending label text
text = self.label.text()
self.label.setText(text + “0”)
def action1(self):
# appending label text
text = self.label.text()
self.label.setText(text + “1”)
def action2(self):
# appending label text
text = self.label.text()
self.label.setText(text + “2”)
def action3(self):
# appending label text
text = self.label.text()
self.label.setText(text + “3”)
def action4(self):
# appending label text
text = self.label.text()
self.label.setText(text + “4”)
def action5(self):
# appending label text
text = self.label.text()
self.label.setText(text + “5”)
def action6(self):
# appending label text
text = self.label.text()
self.label.setText(text + “6”)
def action7(self):
# appending label text
text = self.label.text()
self.label.setText(text + “7”)
def action8(self):
# appending label text
text = self.label.text()
self.label.setText(text + “8”)
def action9(self):
# appending label text
text = self.label.text()
self.label.setText(text + “9”)
def action_clear(self):
# clearing the label text
self.label.setText(“”)
def action_del(self):
# clearing a single digit
text = self.label.text()
print(text[:len(text)-1])
self.label.setText(text[:len(text)-1])
# create pyqt5 app
App = QApplication(sys.argv)
# create the instance of our Window
window = Window()
# start the app
sys.exit(App.exec())
سخن آخر
در این مقاله سعی شد به طور کامل به آموزش pyqt5 و همچنین نحوه نوشتن یک ماشین حساب پرداخته شود. اگر علاقهمند به یادگیری این کتابخانه هستید بهترین راه استفاده از فیلم آموزشی است. قطعا یادگیری این کتابخانه قدرتمند میتواند درآمد بسیار زیادی را برای شما به دنبال داشته باشد. اگر دوست دارید کار کردن با این کتابخانه را یاد بگیرید میتوانید از فرادرس استفاده کنید.
این منبع جامع آموزشی میتواند یک کمک بسیار بزرگ برای شما باشد. همچنین استفاده از آن میتواند سطح علمی شما را تا حد بسیار زیادی افزایش دهد. در این مرجع میتوانید به بیش از 1500 مدرس دسترسی داشته باشید و از فیلمهای آموزشی آنها استفاده کنید. اگر از مطالعه این مقاله لذت بردید در بخش نظرات انتقادها و پیشنهادهای خودتان را با ما در میان بگذارید. شاد و موفق و پیروز باشید.
- مجموعه آموزش برنامه نویسی پایتون (Python) — مقدماتی تا پیشرفته — کلیک کنید