ویژگی تصویر

کتابخانه pyqt5 در پایتون

  /  پایتون   /  کتابخانه 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 می‌تواند توسعه را ساده‌تر و سریع‌تر کند.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: