پای‌کیوت

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
پای‌کیوت
Python and Qt.svg
Screenshot-qt-designer-qwebview.png
توسعه‌دهنده(ها) Riverbank Computing
انتشار پایدار ۴.۹ / ۲۲ دسامبر ۲۰۱۱؛ ۸۴۹ روز پیش
نوشته شده به C++/پایتون
سیستم‌عامل چندسکویی
پروانه گنوجی‌پی‌ال و تجاری
وب‌گاه riverbankcomputing.com

پای‌کیوت (به انگلیسی: PyQt) یک اتصال پایتون چند سکویی است. این یکی از جایگزینها برای برنامه نویسی رابط گرافیکی کاربر در پایتون به تکینتر، است که با پایتون همراه است. PyGTK و wxpython سایر گزینه‌های جایگزین هستند. پای‌کیوت مثل کیوت یک نرم افزار آزاد هست. پای‌کیوت به عنوان یک افزونه پایتون می‌باشد.

پای‌کیوت توسط شرکت رایانه‌ای ریوربانک بریتانیا توسعه داده می‌شود. همچنین این مجموعه تحت شرایط مشابه نسخه‌های قدیمی تر از ۴.۵؛ به این معنی که انواع مجوزها از جمله اجازه نامه عمومی همگانی گنو (GPL) و مجوز تجاری، اما نه اجازه نامه عمومی کمتر گنو (LGPL). پای‌کیوت از لینوکس و سایر یونیکسها، و همچنیناواس ده و ویندوز مایکروسافت پشتیبانی می‌کند.

پای‌کیوت پیاده سازی نزدیک 440 کلاس و بیش از 6.000 توابع و متد از جمله:

در اوت 2009 (مرداد1388)، نوکیا، که اکنون مالک ابزار کیوت است، PySide را منتشر کرد، که قابیلت‌های مشابه‌ای، اما تحت LGPL ارائه می‌دهد. پس از ناکامی در رسیدن به توافق با شرکت رایانه‌ای Riverbank برای تغییر شرایط صدور مجوز که شامل LGPL به عنوان جایگزین می‌باشد.

اجزای اصلی پای‌کیوت[ویرایش]

PyQt شامل زیرمجموعه ای از ماژول‌های مختلف می باشد که هر بخشی وظیفه خاصی را بر عهده دارد.

از بخش‌های مهم PyQt می توان موارد زیر را نام برد:

  • ماژول QtCore شامل کلاس‌های غیر رابط گرافیکی کاربر، از جمله حلقه رویداد و سیگنال‌های کیوت و مکانیزم حافظه. همچنین شامل پلت فرم انتزاعی مستقل برای یونیکد، موضوعات، فایل‌های نقشه برداری، حافظه مشترک، عبارت منظم، و تنظیمات نرم افزار و کاربر می‌باشد.
  • ماژول QtGui شامل اکثر کلاسهای رابط کاربری گرافیکی. این خدمات عبارتند از تعداد جدول، درخت و کلاس فهرست بر اساس الگوی طراحی کنترل-نمایش-ماژول است. همچنین ویجت canvas 2D که قادر به ذخیره سازی هزاران اقلام از جمله ویجت عادی ارائه شده‌است.
  • ماژول QtNetwork این ماژول شامل کلاس‌هایی برای ساخت برنامه‌های سمت سرور یا کلاینت (سرویس دهنده و سرویس گیرنده) بر پایه پروتکل‌های TCP یا UDP می باشد. همچنین این بخش شمال کلاس‌های کلاینت FTP، HTTP و همچنین جستجوی DNS می باشد.
  • ماژول QtOpenGLاین ماژول امکان ایجاد و کار بر روی تصاویر سه بعدی با استفاده از اپن جی ال را فراهم می کند.
  • ماژول QtScript با استفاده از این ماژول برنامه‌های نوشته شده قادر به اجرا اسکریپت‌های جاوا خواهند بود. در حقیقت با استفاده از این روش امکان توسعه و اسکریپت نویسی برای کاربران فراهم می شود.
  • ماژول QtSqlوظیفه این ماژول ایجاد ارتباط با پایگاه داده‌های مبتنی بر SQL می باشد. همچنین این ماژول شامل مدیر دیتابیس SQLite می باشد.
  • ماژول QtSvgاین ماژول شامل توابعی برای نمایش فایل‌هایی با فرمت SVG یا Scalable Vector Graphics است.
  • ماژول QtTestاین ماژول شامل توابعی برای اعمال تست بر روی اجزا برنامه نوشته شده با پایتون و کیوتی می باشد.
  • ماژول QtXmlاین ماژول شامل کلاس‌هایی می باشد که رابط‌های SAX و DOM را برای تجزیه کننده XML کیوتی فراهم می کنند.
  • ماژول QtAssistantبا استفاده از این ماژول می توان نرم افزار Qt Assistant را در برنامه نوشته شده با پایتون و کیوتی درونی سازی کرده و در نتیجه مستندات برنامه را به همراه آن و بدون نیاز به ایجاد بخشی جداگانه در خود برنامه درونی سازی نمود.
  • ماژول QtDesignerتوسط این ماژول امکان توسعه طراح کیوتی توسط PyQt فراهم خواهد شد. برای مثال می توان افزونه یا یک عنصر جدید در PyQt ایجاد و از آن همانند سایر اشیا گرافیکی (Widget) در محیط طراح استفاده کرد.
  • ماژول QAXContainerبا استفاده از این ماژول برنامه نوشته شده قادر خواهد بود به اشیا COM و اکتیو ایکس (ActivX) ارتباط برقرار کند.
  • ماژول Qtاین ماژول شامل تمامی موارد ذکر شده در بالا می باشد. با اضافه کردن این ماژول دیگر نیازی نیست برنامه نویس ماژول شامل تابع مورد نیاز خود را بداند. از معایب این روش لود شدن همه فریم ورک کیوتی می باشد که باعث اشغال زیاد حافظه می گردد.
  • ماژول uicاین ماژول شامل کلاس‌هایی برای کار با فایل‌های ui می باشد که توسط طراح (Designer) کیوتی ایجاد می گردد، می باشد.

ابزار[ویرایش]

PyQt همچنین شامل ابزاری سودمند می باشد که در روند برنامه نویسی بسیار مهم و حیاطی بوده و معمولاً باعث سهولت بسیار برنامه نویسی می شوند. از جمله مهمترین و پرکاربردترین این ابزار در زیر آورده شده‌اند. به‌مرور و در درس‌های بعدی با روش استفاده این ابزار بیشتر آشنا خواهید شد.

pyuic4[ویرایش]

معادل ابزار uic می باشد و بر گرفته از عبارت Python User Interface Compiler v4 می باشد. این ابزار فایل‌های رابط گرافیکی ایجاد شده توسط ابزار Qt Designer را به سورس کد پایتون تبدیل می کند.

pyrcc4[ویرایش]

این ابزار معادل rcc فریم ورک کیوتی و بر گرفته از عبارت Python Resource Compiler v4 می باشد. توسط این ابزار امکان تبدیل فایل‌های منبع (resource) به سورس پایتون فراهم می شود. با استفاده از این ابزار می توان فایل‌هایی چون عکس، آیکن یا هر فایل دلخواه را به سورس پایتون تبدیل و در برنامه یا فایل اجرایی مستقل (مثلاً exe در ویندوز) درونی سازی نمود.

pylupdate4[ویرایش]

این ابزار نبز معادل lupdate است و برای ایجاد یا بروز رسانی فایل لغات برنامه مورد استفاده قرار می گیرد. با استفاده از این ابزار می توان فایل ts ایجاد و سپس با استفاده از نرم افزاری چون Qt Linguist آنها را ترجمه و در برنامه استفاده کرد. این ابزار روند توسعه برنامه‌های چند زبانه را بسیار آسان می کند.

نصب PyQt[ویرایش]

نصب در ویندوز[ویرایش]

نصب PyQt در ویندوز بسیار آسان می باشد. در سیستم عامل ویندوز برخی مواقع نیاز هست مسیر نصب شده به Environment Variables یا متغیرهای محیطی PATH اضافه گردد. برای اینکار مسیر مفسر پایتون و در صورت نیاز کیوتی را به این متغیر اضافه کنید. برای ویرایش متغیر PATH می توانید با راست کلیک بر روی My Computer و انتخاب گزینه Properties به تب Advanced و سپس کلیک روی Environment Variables به متغیرهای محیطی دسترسی داشته باشد.

برای نصب فایل باینری نصاب را از سایت رسمی سایت PyQt دانلود و نصب کنید. این فایل باینری با حجم تقریبی 16 مگابایت شامل ابزارهای زیر می باشد.

  • PyQt
  • (Qt (with database support for SQLite3 and ODBC
  • Qt Designer
  • Qt Linguist
  • Qt Assistant
  • pyuic4
  • pylupdate4
  • lrelease
  • pyrcc4
  • QScintilla
  • PyQwt
  • Qwt
  • eric IDE

روند نصب بسیار آسان بوده و این فایل تمامی ابزارها و فایل‌های مورد نیاز را نصب خواهد کرد.

نصب در لینوکس[ویرایش]

مراحل نصب در لینوکس می تواند متفاوت باشد. برخی ترجیح می دهند آخرین بسته‌ها را دریافت و کامپایل کنند و برخی برای فرار از مشکلات کامپایل ترجیح می دهند از نصاب‌های سیستم عامل استفاده کنند. در حالت کلی بسته‌های زیر (به ترتیب) باید روی سیستم نصب گردند.

  • Qt که می تواند شامل ابزاری Qt Designer، Qt Assistant و … بوده یا تنها کتابخانه‌های اصلی باشد.
  • SIP
  • PyQt

ممکن است بسته به سیستم عامل و توزیع‌های مختلف اسامی بسته‌ها متفاوت باشد ! برای مثال نام بسته PyQt در مخازن ابونتو python-qt4 می باشد ! اگر در مراحل نصب یا کامپایل مشکلی بود در انجمن‌های سایت مطرح کنید.

روند ساخت یک برنامه با PyQt[ویرایش]

ساخت برنامه با استفاده از PyQt ممکن است به روش‌های مختلفی صورت گیرد. در هر روش می توان بسته به شرایط و علایق شخصی از ابزارهای مختلفی استفاده کرد.

ولی شاید راحتترین و پرکاربردترین روش استفاده از طراح کیوتی (Qt Designer) می باشد. با استفاده از طراح کیوتی می توان پیچیده‌ترین پنجره‌ها را به‌سادگی هرچه تمام ایجاد کرد.

این روش شامل مراحل زیر می باشد:

  1. ایجاد یک فایل رابط گرافیکی با استفاده از طراح کیوتی (Qt Designer)
  2. تخصیص نام و مقدار دهی مشخصه‌های مختلف در ویرایشگر صفات طراح کیوتی
  3. استفاده از pyuic4 برای ایجاد کلاس پایتون (فایل py) از فایل رابط گرافیکی ایجاد شده
  4. ایجاد و ساخت تابع اصلی برنامه و فراخوانی کلاس رابط گرافیکی
  5. گسترش کلاس ایجاد شده موجود با توابع و کدهای پایتون

تبدیل فایل PyQt به کد پایتون و اجرای آن[ویرایش]

تبدیل فایل‌ها با دو روش دستی و نرم افزار مبدل امکان پذیر میباشد

روش دستی[ویرایش]

مرحله اول: ساخت فرم و ذخیره سازی

در ابتدا شما یک فرم را با استفاده از Designer در PYQT 4 طراحی می کنید سپس فرمتون را باید با پسوند.ui سیو (Save) کرده

مرحله دوم: اجرای PYUIC4 روی Start در Taskbar کلیک کرده و سپس بر روی Run کلیک کرده در کادر باز شده تایپ کنید CMD و Ok را بزنید.

مسیر pyuic نصب شده را بیابید. به صورت پیش فرض در این مسیر نصب میگردد

C:\Python26\Lib\site-packages\PyQt4\uic\pyuic.py

نکته 1: برای paste کردن در cmd باید کلیک راست رو بزنید و paste رو بزنید و با دکمه ctrl V این کار انجام نخواهد شد.

دستور زیر را در cmd وارد کنید البته برای افراد مختلف این دستور فرق داره یعنی بعد از دستور CD باید آدرس جایی رو وارد کنید که pyuic در آن قرار دارد

cd C:\Python26\Lib\site-packages\PyQt4\uic

مرحله سوم:آماده سازی نهایی برای تبدیل به کد پایتون[ویرایش]

آدرس جایی که (Directory) فایل.ui خودتون را ذخیره شده را کپی کنید به طور مثال C:\Python26\Lib\site-packages\PyQt4\1.ui

بعد از این کار یک آدرس برای ذخیره سازی فایل انتخاب کنید به طور مثال E:\1.py

مرحله چهارم:تبدیل به کد پایتون کد زیر را در CMD وارد کرده و نتیجه را در محلی که فایل.pyw را برای ذخیره سازی انخاب کرده اید مشاهده کنید

pyuic.py C:\Python26\Lib\site-packages\PyQt4\1.ui -x> E:\1.py

نرم افزاری مبدل[ویرایش]

با استفاده از نرم افزار مبدل میتوانید فایل Ui را به Py تبدیل کنید.[۱]

طراح کیوت[ویرایش]

طراح کیوت Qt Designer برنامه ای هست برای طراحی محیط گرافیکی برای دستورهای پایتون

نمونه برنامه سلام دنیا[ویرایش]

کد زیر پنجره سلام دنیا را نشان میدهد

#! /usr/bin/env python
# -*- coding: utf-8 -*-
## Here we provide the necessary imports.
# The basic GUI widgets are located in QtGui module.
import sys
from PyQt4.QtGui import *
# Every PyQt4 application must create an application object.
# The application object is located in the QtGui module.
a = QApplication(sys.argv)
# The QWidget widget is the base class of all user interface objects in PyQt4.
# We provide the default constructor for QWidget. The default constructor has no parent.
# A widget with no parent is called a window.
w = QWidget()
 
w.resize(320, 240) # The resize() method resizes the widget.
w.setWindowTitle("Hello, World!") # Here we set the title for our window.
w.show() # The show() method displays the widget on the screen.
 
sys.exit(a.exec_()) # Finally, we enter the mainloop of the application.
The result

برنامه‌های قابل توجه‌ای که از پای‌کیوت استفاده کرده‌اند[ویرایش]

SIP[ویرایش]

جستارهای وابسته[ویرایش]

منابع[ویرایش]

ویکی‌پدیای انگلیسی

http://www.riverbankcomputing.co.uk/software/pyqt/intro

  1. ترجمه از ویکی پایتون [۱]