lida_star
8th November 2008, 08:20 AM
PyQt در حقیقت مجموعه ای از ابزار های زبان برنامه نویسی پایتون بمنظور استفاده از فریم ورك برنامه سازی Qt می باشد . كیوتی خود مجموعه ای از كتابخانه های ++C به همراه ابزار های مورد نیاز برای توسعه برنامه های كامپیوتری می باشد . كیوتی شامل مجموعه ای از ابزار های مورد نیاز برای برنامه نویسی رابط كاربری ، شبكه ، چند نخی ، یونیكد ، پردازش متن ، پایگاه داده ، SVG ، اپن جی ال (OpenGL) ، ایكس ام ال (XML) و ... می باشد . ابزار PyQt تعداد 440 عدد از كلاس ها و كتابخانه های نوشته شده با زبان سی پلاس پلاس را بصورت ماژول برای پایتون فراهم كرده است .
در حقیقت PyQt پل و رابطی هست بین ابزار بسیار قدرتمند كیوتی به همراه كتابخانه هایی بسیار گسترده با زبان برنامه نویسی تفسیری و آسان پایتون ! با استفاده از این ابزار می توان قدرت ، كارایی و سرعت و سهولت را باهم و كنار هم تجربه نمود .
پایتون و كیوتی هردو امكان اجرا در پلتفرم ها و سیستم عامل های مختلف را دارا می باشد . بنا براین PyQt نیز مولتی پلتفرم بوده و وابسته به نرم افزار یا سخت افزار خاصی نیست .
اجزا تشكیل دهنده PyQt
ماژول ها
PyQt شامل زیرمجموعه ای از ماژول های مختلف می باشد كه هر بخشی وظیفه خاصی را بر عهده دارد . از بخش های مهم PyQt می توان موارد زیر را نام برد :
QtCore : این ماژول شامل كلاس ها غیر گرافیكی بوده و به عبارتی دیگر هسته مركزی می باشد كه بخش های مهمی چون حلقه وقایع (event loop) و مكانیسم سیگنال و اسلات (Signal/Slot) را شامل می شود .
QtGui : این بخش شامل همه كلاس های گرافیكی می باشد .
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 به متغییر های محیطی دسترسی داشته باشد .
نصب در لینوكس
مراحل نصب در لینوكس می تواند متفاوت باشد . برخی ترجیح می دهند آخرین بسته ها را دریافت و كامپایل كنند و برخی برای فرار از مشكلات كامپایل ترجیح می دهند از نصاب های سیستم عامل استفاده كنند . در حالت كلی بسته های زیر (به ترتیب) باید روی سیستم نصب گردند .
Qt كه می تواند شامل ابزاری Qt Designer ، Qt Assistant و ... بوده یا تنها كتابخانه های اصلی باشد .
SIP
PyQt
ممكن است بسته به سیستم عامل و توزیع های مختلف اسامی بسته ها متفاوت باشد ! برای مثال نام بسته PyQt در مخازن ابونتو python-qt4 می باشد ! اگر در مراحل نصب یا كامپایل مشكلی بود در انجمن های سایت مطرح كنید .
روند ساخت یك برنامه با PyQt
ساخت برنامه با استفاده از PyQt ممكن است به روش های مختلفی صورت گیرد . در هر روش می توان بسته به شرایط و علایق شخصی از ابزار های مختلفی استفاده كرد . ولی شاید راحتترین و پركاربردترین روش استفاده از طراح كیوتی (Qt Designer) می باشد . با استفاده از طراح كیوتی می توان پیچیده ترین پنجره ها را بسادگی هرچه تمام ایجاد كرد . این روش شامل مراحل زیر می باشد :
ایجاد یك فایل رابط گرافیكی با استفاده از طراح كیوتی (Qt Designer)
تخصیص نام و مقدار دهی مشخصه های مختلف در ویرایشگر صفات طراح كیوتی
استفاده از pyuic4 برای ایجاد كلاس پایتون (فایل py) از فایل رابط گرافیكی ایجاد شده
ایجاد و ساخت تابع اصلی برنامه و فراخوانی كلاس رابط گرافیكی
گسترش كلاس ایجاد شده موجود با توابع و كد های پایتون
در حقیقت PyQt پل و رابطی هست بین ابزار بسیار قدرتمند كیوتی به همراه كتابخانه هایی بسیار گسترده با زبان برنامه نویسی تفسیری و آسان پایتون ! با استفاده از این ابزار می توان قدرت ، كارایی و سرعت و سهولت را باهم و كنار هم تجربه نمود .
پایتون و كیوتی هردو امكان اجرا در پلتفرم ها و سیستم عامل های مختلف را دارا می باشد . بنا براین PyQt نیز مولتی پلتفرم بوده و وابسته به نرم افزار یا سخت افزار خاصی نیست .
اجزا تشكیل دهنده PyQt
ماژول ها
PyQt شامل زیرمجموعه ای از ماژول های مختلف می باشد كه هر بخشی وظیفه خاصی را بر عهده دارد . از بخش های مهم PyQt می توان موارد زیر را نام برد :
QtCore : این ماژول شامل كلاس ها غیر گرافیكی بوده و به عبارتی دیگر هسته مركزی می باشد كه بخش های مهمی چون حلقه وقایع (event loop) و مكانیسم سیگنال و اسلات (Signal/Slot) را شامل می شود .
QtGui : این بخش شامل همه كلاس های گرافیكی می باشد .
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 به متغییر های محیطی دسترسی داشته باشد .
نصب در لینوكس
مراحل نصب در لینوكس می تواند متفاوت باشد . برخی ترجیح می دهند آخرین بسته ها را دریافت و كامپایل كنند و برخی برای فرار از مشكلات كامپایل ترجیح می دهند از نصاب های سیستم عامل استفاده كنند . در حالت كلی بسته های زیر (به ترتیب) باید روی سیستم نصب گردند .
Qt كه می تواند شامل ابزاری Qt Designer ، Qt Assistant و ... بوده یا تنها كتابخانه های اصلی باشد .
SIP
PyQt
ممكن است بسته به سیستم عامل و توزیع های مختلف اسامی بسته ها متفاوت باشد ! برای مثال نام بسته PyQt در مخازن ابونتو python-qt4 می باشد ! اگر در مراحل نصب یا كامپایل مشكلی بود در انجمن های سایت مطرح كنید .
روند ساخت یك برنامه با PyQt
ساخت برنامه با استفاده از PyQt ممكن است به روش های مختلفی صورت گیرد . در هر روش می توان بسته به شرایط و علایق شخصی از ابزار های مختلفی استفاده كرد . ولی شاید راحتترین و پركاربردترین روش استفاده از طراح كیوتی (Qt Designer) می باشد . با استفاده از طراح كیوتی می توان پیچیده ترین پنجره ها را بسادگی هرچه تمام ایجاد كرد . این روش شامل مراحل زیر می باشد :
ایجاد یك فایل رابط گرافیكی با استفاده از طراح كیوتی (Qt Designer)
تخصیص نام و مقدار دهی مشخصه های مختلف در ویرایشگر صفات طراح كیوتی
استفاده از pyuic4 برای ایجاد كلاس پایتون (فایل py) از فایل رابط گرافیكی ایجاد شده
ایجاد و ساخت تابع اصلی برنامه و فراخوانی كلاس رابط گرافیكی
گسترش كلاس ایجاد شده موجود با توابع و كد های پایتون