پای‌کیوت

پای‌کیوت یک اتصال پایتون چند سکویی است. این یکی از جایگزین‌ها برای برنامه‌نویسی رابط گرافیکی کاربر در پایتون به‌جای تی‌کی‌اینتر است که با پایتون همراه است. PyGTK و wxpython سایر گزینه‌های جایگزین هستند. پای‌کیوت مثل کیوت یک نرم‌افزار آزاد هست. پای‌کیوت به عنوان یک افزونه پایتون می‌باشد.
پای‌کیوت توسط شرکت رایانه‌ای ریوربانک بریتانیا توسعه داده می‌شود. همچنین این مجموعه تحت شرایط مشابه نسخه‌های قدیمی‌تر از ۴٫۵؛ به این معنی که انواع مجوزها از جمله اجازه‌نامه عمومی همگانی گنو (GPL) و مجوز تجاری، اما نه اجازه‌نامه عمومی کمتر گنو (LGPL). پای‌کیوت از لینوکس و سایر یونیکسها، و همچنیناواس ده و ویندوز مایکروسافت پشتیبانی می‌کند.
پای‌کیوت پیاده‌سازی نزدیک ۴۴۰ کلاس و بیش از ۶٫۰۰۰ توابع و متد از جمله:
مجموعه قابل توجهی از ابزارهای رابط گرافیکی کاربر
کلاسهایی برای دسترسی به پایگاه داده‌ها (ادی‌بی‌سی، مای‌اس‌کیوال، پست‌گر اس‌کیوال، اوراکل)
QScintila، ویجت Scintila مبتنی بر ویرایشگر متن غنی
ویجت آگاه اطلاعات که به صورت خودکار از یک پایگاه اطلاعاتی جمعیت
تجزیه کننده XML
پشتیبانی از SVG
کلاس‌های برای تعبیه کنترل اکتیوایکس بروی ویندوز (فقط در نسخه تجاری)
در اوت ۲۰۰۹ (مرداد۱۳۸۸)، نوکیا، که اکنون مالک ابزار کیوت است، 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 دانلود و نصب کنید. این فایل باینری با حجم تقریبی ۱۶ مگابایت شامل ابزارهای زیر می‌باشد.
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) می‌باشد. با استفاده از طراح کیوتی می‌توان پیچیده‌ترین پنجره‌ها را به‌سادگی هرچه تمام ایجاد کرد.
این روش شامل مراحل زیر می‌باشد:
ایجاد یک فایل رابط گرافیکی با استفاده از طراح کیوتی (Qt Designer)
تخصیص نام و مقدار دهی مشخصه‌های مختلف در ویرایشگر صفات طراح کیوتی
استفاده از pyuic4 برای ایجاد کلاس پایتون (فایل py) از فایل رابط گرافیکی ایجاد شده
ایجاد و ساخت تابع اصلی برنامه و فراخوانی کلاس رابط گرافیکی
گسترش کلاس ایجاد شده موجود با توابع و کدهای پایتون
تبدیل فایل PyQt به کد پایتون و اجرای آن
تبدیل فایل‌ها با دو روش دستی و نرم‌افزار مبدل امکان‌پذیر می‌باشد
روش دستی
مرحله اول: ساخت فرم و ذخیره‌سازی
در ابتدا شما یک فرم را با استفاده از Designer در PYQT 4 طراحی می‌کنید سپس فرمتون را باید با پسوند.ui سیو (Save) کرده
مرحله دوم: اجرای PYUIC4
روی Start در Taskbar کلیک کرده و سپس بر روی Run کلیک کرده در کادر باز شده تایپ کنید CMD و Ok را بزنید.
مسیر pyuic نصب شده را بیابید. به صورت پیش فرض در این مسیر نصب می‌گردد
C:\Python26\Lib\site-packages\PyQt4\uic\pyuic.py
نکته ۱: برای 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
برنامه‌های قابل توجه‌ای که از پای‌کیوت استفاده کرده‌اند
Anki
Eric Python IDE
QtiPlot
qt-recordMyDesktop
Kodos
کیوجی‌آی‌اس
SIP
پایتون (زبان برنامه‌نویسی)
کیوت Qt
طراح کیوت Qt Designer
Eclipse