پای‌کیوت

پای‌کیوت یک اتصال پایتون چند سکویی است. این یکی از جایگزین‌ها برای برنامه‌نویسی رابط گرافیکی کاربر در پایتون به‌جای تی‌کی‌اینتر است که با پایتون همراه است. 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.

برنامه‌های قابل توجه‌ای که از پای‌کیوت استفاده کرده‌اند 
 Anki
 Eric Python IDE
 QtiPlot
 qt-recordMyDesktop
 Kodos
 کیوجی‌آی‌اس

SIP

جستارهای وابسته 
 پایتون (زبان برنامه‌نویسی)
 کیوت Qt
 طراح کیوت Qt Designer
 Eclipse

منابع 
ویکی‌پدیای انگلیسی

https://web.archive.org/web/20110122093338/http://www.riverbankcomputing.co.uk/software/pyqt/intro

ابزارهای ویدجت
کتابخانه‌های پایتون
کتابخانه‌های رایانه‌ای آزاد
کیوت (چارچوب)
مقاله‌های دارای کد نمونه به زبان پایتون
نرم‌افزارهای آزاد چندسکویی
نرم‌افزارهای آزاد نوشته‌شده با پایتون
نرم‌افزارهای آزاد نوشته‌شده با سی++