درس دوم: ایجاد اولین برنامه با PyQt

15 اردیبهشت 1399

ایجاد اولین برنامه با PyQt

حالا شما یک نصب موفقیت آمیز از PyQt داشته و آماده ی کد نویسی هستید. در این بخش یک برنامه ی "Hello World" با پایتون و PyQt ایجاد خواهید کرد (طبق رسم برای آغاز یادگیری یک زبان برنامه نویسی و فریم ورک جدید توانایی ایجاد برنامه ای که عبارت "سلام دنیا" را در خروجی نمایش دهد قدم اول یادگیری محسوب می شود).

مراحل کلی که باید انجام دهید به شرح زیر می باشد:

1-QApplication و تمام ویجت های لازم را از PyQt5.QtWidgets وارد برنامه کنید.
2-یک نمونه از QApplication ایجاد کنید.
3-یک نمونه از رابط گرافیکی برنامه تان ایجاد کنید. (نمونه ایجاد اشیا از یک کلاس خاص می باشد.)
4-رابط گرافیکی برنامه تان را نمایش دهید.
5-حلقه ی رویداد برنامه ی خود را اجرا کنید.(در دروس بعدی در این مورد بیشتر خواهید خواند)

برای دانلود کد مورد استفاده در این بخش اینجا کلیک کنید.

با فایلی تحت عنوان hello.py در دایرکتوری جاری خود آغاز کنید:

# Filename: hello.py

"""Simple Hello World example with PyQt5."""

import sys

# 1. Import `QApplication` and all the required widgets
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QLabel
from PyQt5.QtWidgets import QWidget

ابتدا sys که امکانات خروج از برنامه را برایتان ممکن می سازد سپسQLabel ,QApplicationQWidget, را از QtWidgets را که بخشی از پکیج PyQt می باشند، وارد کنید. از این ها بعدا استفاده خواهید کرد اما فعلا مرحله ی اول را انجام دادید.

برای مرحله ی دوم نیاز به ایجاد یک نمونه از QApplication به صورت زیر می باشد:

# 2. Create an instance of QApplication
app = QApplication(sys.argv)

در اینجا هم یک نمونه از QApplication ایجاد می کنید. از آنجایی که شئ ایجاد شده از کلاس QApplication مقداردهی های اولیه را انجام می دهد، لذا لازم است که قبل از ایجاد هر شئ دیگری در ارتباط با رابط گرافیکی آن را ایجاد کرده باشیم. همچنین شئ ایجاد شده از QApplication با دستورات cmd یا خط فرمان ویندوز سر و کار دارد و بنابر این شما نیاز دارید که sys.argv را به عنوان پارامتر وارد به آن کنید.

نکته: sys.argv شامل لیستی از ارگومان های خط فرمان است که به اسکریپت پایتونی گذر داده می شود. اگر برنامه ی شما قرار نیست که این ارگومان ها را بپذیرد، می توانید از لیست خالی به جای آن استفاده کنید. مثل:

app = QApplication([])

مرحله ی سوم، ایجاد کردن رابط کاربری می باشد. در این مثال رابط کاربری شما بر پایه ی Qwidget خواهد بودکه کلاس پایه ی تمام اشیاء مربوط به رابط گرافیکی است. سراغ ایجاد رابط کاربری می رویم:

# 3. Create an instance of your application's GUI
window = QWidget()
window.setWindowTitle('PyQt5 App')
window.setGeometry(100, 100, 280, 80)
window.move(60, 15)
helloMsg = QLabel('<h1>Hello World!</h1>', parent=window)
helloMsg.move(60, 15)

در این کد window یک نمونه از QWidget می باشد که تمام امکاناتی که برای ایجاد پنجره برنامه نیاز دارید را فراهم می سازد. با ()setWindowTitle. می توانید یک عنوان به پنجره ی برنامه ی خودتان بیفزایید (در اینجا عنوان نمایشی برنامه را PyQt5 App قرار داده ایم).

می توانید از ()setGeometry. برای تعریف اندازه ی پنجره و مکان قرارگیری آن در روی صفحه نمایش استفاده کنید. دو پارامتر اولی مربوط به مولفه های x و y نقطه ای که مبدا مختصات پنجره ی برنامه قرار خواهد گرفت و دو پارامتر بعدی به ترتیب عرض و طول پنجره می باشند.

هر برنامه ی گرافیکی تابع محور، نیازمند ویجت هاست! یعنی شما از شئ QLabel (یا همان helloMsg) برای نمایش پیغام "سلام دنیا " در پنجره ی برنامه استفاده می کنید. اشیاء QLabel دارای قابلیت پشتیبانی از تگ های HTML  می باشند لذا می توانید با استفاده از آن به صورت <h1>Hello World!</h1> متن را به حالت سر تیتر قالب بندی کنید (در HTML تگ های h1 تا h6 به ترتیب متن را از بزرگترین سرتیتر تا کوچکترین سرتیتر درمی آورند).

در نهایت از ()move. برای قرار دادن شئ helloMsg در مختصات(15, 60)روی پنجره ی برنامه استفاده می کنید.

حالا مرحله ی سوم را انجام دادید پس باهم می رویم تا دو مرحله ی پایانی را هم کدنویسی کرده و اولین برنامه ی گرافیکی مان را زنده بسازیم.

# 4. Show your application's GUI
window.show()

# 5. Run your application's event loop (or main loop)
sys.exit(app.exec_())

اینجا متد ()show. از window را فراخوانی می کنید و این متد یک رویداد ترسیمی را برنامه ریزی و زمان بندی می کند، بعبارت دیگر یک رویداد جدید را به صف رویدادهای برنامه می افزاید. مطالب مربوط به حلقه های رویداد را در قسمت آتی خواهید خواند.

نکته: حلقه ی ترسیمی یک درخواست برای ترسیم ویجت هایی می باشد که رابط کاربری را می سازند.

در نهایت حلقه ی رویداد برنامه را با فراخوانی ()_app.exec آغاز می نمایید. فراخوانی این متد به عنوان پارامتر ()sys.exit موجب می شود که امکان خروج کامل از پایتون و آزاد سازی منابع هنگام خاتمه یافتن برنامه میسر گردد.

در خط فرمان سیستم عامل با دستور زیر می توانید فایل ایجاد شده hello.py را اجرا کنید:

$ python3 hello.py

وقتی این اسکریپت را اجرا می کنید باید با تصویری همانند تصویر زیر مواجه شوید:

برنامه ی شما پنجره ای را (بر مبنای QWidget) نشان می دهد با یک پیغام "Hello World" که برای نمایش این از یک QLabel که شامل متن با قالب HTML میباشد استفاده می کنید.

تبریک! شما اولین برنامه دسکتاپ با رابط گرافیکی PyQt را ساختید. این درس تنها جنبه ی آشنایی و درک ارتباط کدنویسی و طراحی رابط گرافیکی دارد. در درس های بعدی تمام مشکلاتتان برطرف خواهد شد.


منبع: سایت Real Python

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

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.