کتابخانه pyqt5 در پایتون
کتابخانه PyQt5 یکی از محبوبترین ابزارها برای طراحی رابط کاربری گرافیکی (GUI) در زبان برنامهنویسی پایتون است. این کتابخانه به توسعهدهندگان اجازه میدهد تا نرمافزارهای دسکتاپ حرفهای با ظاهر مدرن، کارایی بالا و قابلیت چندسکویی (Cross-platform) ایجاد کنند. در این مقاله، با ساختار PyQt5، نحوه نصب، ساخت اولین پروژه، مدیریت رویدادها و نکات کلیدی برای بهینهسازی برنامهها آشنا میشویم.
PyQt5 چیست؟
PyQt5 یک رابط پایتونی برای Qt است — چارچوبی که توسط شرکت Qt Company توسعه داده شده و در زبان C++ نوشته شده است. این رابط به برنامهنویسان پایتون اجازه میدهد تا از قابلیتهای Qt برای طراحی واسطهای گرافیکی پیشرفته بهره ببرند. بهعبارت دیگر، PyQt5 پلی میان قدرت Qt و سادگی پایتون است.
ویژگیهای اصلی PyQt5
- پشتیبانی از تمام ویجتهای گرافیکی Qt (مانند دکمه، منو، فرمها و جدولها)
- امکان طراحی با استفاده از ابزار گرافیکی Qt Designer
- پشتیبانی از Signal و Slot برای ارتباط بین اجزا
- پشتیبانی از OpenGL برای گرافیک سهبعدی
- قابل استفاده در سیستمعاملهای Windows، macOS و Linux
نصب PyQt5
برای نصب PyQt5 کافی است از دستور زیر در ترمینال یا محیط پایتون استفاده کنید:
pip install PyQt5این دستور بسته PyQt5 را از مخزن PyPI دریافت و نصب میکند. برای بررسی نصب موفق، میتوانید دستور زیر را اجرا کنید:
python -m PyQt5.uic.pyuicاگر خطایی مشاهده نشود، نصب با موفقیت انجام شده است.
ساخت اولین برنامه با PyQt5
در این بخش، یک مثال ساده از ساخت یک پنجره گرافیکی در پایتون را بررسی میکنیم.
from PyQt5.QtWidgets import QApplication, QLabel, QWidget
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("اولین برنامه PyQt5")
window.setGeometry(100, 100, 400, 200)
label = QLabel("سلام دنیا!", parent=window)
label.move(160, 90)
window.show()
sys.exit(app.exec_())
در این مثال:
- QApplication مسئول مدیریت چرخهی اجرای برنامه است.
- QWidget به عنوان پنجرهی اصلی برنامه استفاده میشود.
- QLabel برای نمایش متن استفاده شده است.
- در پایان،
app.exec_()حلقهی اصلی رویدادها را آغاز میکند.
نکته بهینهسازی
اگر در پروژههای بزرگ از چندین پنجره استفاده میکنید، بهتر است از کلاسهای مجزا برای هر بخش استفاده شود تا ساختار پروژه قابل نگهداریتر باشد.
کار با ویجتها در PyQt5
ویجتها (Widgets) عناصر گرافیکی هستند که کاربر با آنها تعامل دارد. PyQt5 شامل صدها ویجت است. در ادامه چند نمونه مهم را بررسی میکنیم:
| ویجت | توضیح |
|---|---|
| QPushButton | دکمهی فشاری برای انجام عملیات |
| QLineEdit | ورودی متن تکخطی |
| QTextEdit | ورودی چندخطی |
| QComboBox | لیست کشویی |
| QTableWidget | نمایش دادهها در قالب جدول |
مثال کاربردی: دکمه و برچسب
from PyQt5.QtWidgets import QApplication, QPushButton, QLabel, QWidget
import sys
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("نمونه دکمه در PyQt5")
self.setGeometry(200, 200, 300, 150)
self.label = QLabel("روی دکمه کلیک کنید", self)
self.label.move(80, 40)
self.button = QPushButton("کلیک", self)
self.button.move(100, 80)
self.button.clicked.connect(self.on_click)
def on_click(self):
self.label.setText("دکمه کلیک شد!")
app = QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
در این کد، با استفاده از مکانیزم Signal و Slot، بین رویداد کلیک دکمه و متد on_click ارتباط برقرار شده است. وقتی کاربر روی دکمه کلیک کند، متن برچسب تغییر میکند.
کار با Layoutها
استفاده از Layoutها در PyQt5 برای مدیریت چیدمان اجزا ضروری است. بهجای تنظیم دستی موقعیت هر ویجت با move()، میتوان از Layoutها مانند QVBoxLayout، QHBoxLayout و QGridLayout استفاده کرد.
نمونه: استفاده از QVBoxLayout
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel
import sys
class LayoutApp(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("مدیریت چیدمان در PyQt5")
layout = QVBoxLayout()
layout.addWidget(QLabel("بالا"))
layout.addWidget(QPushButton("میانی"))
layout.addWidget(QLabel("پایین"))
self.setLayout(layout)
app = QApplication(sys.argv)
window = LayoutApp()
window.show()
sys.exit(app.exec_())
در این مثال، ویجتها بهصورت عمودی در پنجره چیده شدهاند. استفاده از Layout باعث میشود برنامه شما در اندازههای مختلف صفحه نمایش نیز ظاهر منظم خود را حفظ کند.
طراحی رابط کاربری با Qt Designer
Qt Designer ابزاری گرافیکی است که به شما اجازه میدهد بدون نوشتن کد، رابط کاربری بسازید. پس از طراحی فایل با پسوند .ui، میتوانید آن را به پایتون تبدیل کنید:
pyuic5 -x design.ui -o design.pyفایل تولیدشده شامل کلاس پایتونی متناظر با طراحی شما خواهد بود. برای استفاده از آن در برنامه اصلی کافی است کلاس را ایمپورت و فراخوانی کنید.
بهترین روش کار با فایلهای UI
بهجای ویرایش مستقیم فایل design.py، پیشنهاد میشود کلاس جدیدی بسازید که آن را به ارث ببرد. این کار باعث میشود در آینده بتوانید فایل UI را بهروزرسانی کنید بدون اینکه تغییراتتان از بین برود.
مدیریت رویدادها (Event Handling)
در PyQt5 هر تعامل کاربر (کلیک، تایپ، حرکت ماوس و غیره) یک رویداد است. برای کنترل این رویدادها، میتوانید از متدهایی مانند mousePressEvent، keyPressEvent و closeEvent استفاده کنید.
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
self.close()
کد بالا پنجره را در صورت فشردن کلید ESC میبندد. این نوع کنترل رویداد برای ساخت برنامههای تعاملی ضروری است.
اتصال سیگنالهای سفارشی
علاوه بر سیگنالهای پیشفرض، میتوانید سیگنالهای سفارشی نیز بسازید:
from PyQt5.QtCore import pyqtSignal, QObject
class Communicate(QObject):
custom_signal = pyqtSignal()
def custom_slot():
print("سیگنال سفارشی فعال شد!")
c = Communicate()
c.custom_signal.connect(custom_slot)
c.custom_signal.emit()
در این نمونه، سیگنالی به نام custom_signal تعریف و با متدی متصل شده است که پیغام خاصی چاپ میکند. این ویژگی برای ارتباط بین اجزای مختلف برنامه بسیار مفید است.
نکات کلیدی در بهینهسازی پروژههای PyQt5
- از Layoutها بهجای تنظیم دستی موقعیتها استفاده کنید.
- برای پروژههای بزرگ، هر بخش رابط کاربری را در کلاس جداگانه تعریف کنید.
- سیگنالها و Slotها را با نامهای معنادار تعریف کنید تا نگهداری کد آسانتر شود.
- در صورت نیاز به چندریسمانی (multithreading)، از
QThreadاستفاده کنید. - برای بارگذاری فایلهای بزرگ از
QProgressBarوQTimerبرای بهبود تجربه کاربر استفاده کنید.
مزایا و معایب PyQt5
| مزایا | معایب |
|---|---|
| رابط کاربری مدرن و قابل سفارشیسازی | حجم بالای برنامه نهایی |
| سازگاری بالا با پلتفرمهای مختلف | مجوز GPL ممکن است برای پروژههای تجاری محدودیت ایجاد کند |
| پشتیبانی از ابزار طراحی گرافیکی | پیچیدگی نسبی در یادگیری مفاهیم سیگنال و Slot |
جمعبندی
کتابخانه PyQt5 ابزاری قدرتمند و کامل برای ساخت برنامههای دسکتاپ در پایتون است. با درک اصول ویجتها، Layoutها، سیگنالها و رویدادها میتوانید برنامههایی حرفهای و کاربرپسند طراحی کنید. استفاده از ساختار کلاسمحور، رعایت اصول ماژولار و بهرهگیری از ابزارهایی مانند Qt Designer میتواند توسعه را سادهتر و سریعتر کند.
آیا این مطلب برای شما مفید بود ؟




