در ادامه معرفی انواع روش های برنامه نویسی بر روی برد رزبری، نوبت به معرفی ویرایشگرو IDE نسبتا قدرتمند، به نام پای چارم(PyCharm) می رسد که در حقیقت یک cross platform می باشد و بر روی سیستم عامل های مختلفی مانند windows,linux,macOS قابل نصب است و خروجی کامپایل شده آن در یک سیستم عامل، بر روی سیستم عامل دیگر هم قابل اجرا است.
راهنمای نصب پای چارم در ویندوز:
نکته مهم قبل از نصب پای چارم، اطمینان از نصب پایتون می باشد. حتما زمانی که می خواهید پایتون را نصب نمایید تیک گزینه Add Python x.x to Path را بزنید. همچنین توصیه می کنیم که برای نصب بسته های مربوط به پای چارم، PIP را هم حتما نصب نمایید.برای این کار نخست فایل get-pip.py را دانلود کرده و در یک فولدر مشخص کپی نمایید.
برای نصب پای چارم، سورس آن را از آدرس زیردریافت نمایید. سپس آن را اجرا نمایید.
https://www.jetbrains.com/pycharm/download/
گام بعدی نصب کتابخانه PyQt5 است که ماژول های متنوعی برای توسعه یرنامه های پایتون در چهارچوبQt آماده کرده است. در حقیقت Qt چیزی بیشتر ازصرفا یک GUI toolkit است و گزینه های متنوعی شامل network sockets, threads, Unicode, regular expressions, SQL databases, SVG, OpenGL, XML, a fully functional web browser, a help system, a multimedia framework را فراهم نموده است. درحقیقتPyQt همه مزایای پایتون و Qt را ترکیب نموده است.برای نصب PyQt5 ازPIP استفاده نمایید. سپس با cmd (کامند ران) به همان مسیر رفته و PyQt5 را نصب نمایید.
c:/>pip install PyQt5
pip install pyqt5-tools
برای اینکه PyQt5 را در پای چارم نصب نمایید، باید در پای چارم به مسیر زیر بروید.
File --- settings ---- Project --- Python Interpreter
در انجا بسته های PyQt5,PyQt5-sip,PyQt-tools را نصب نمایید.
اگر بخواهید از قابلیت های QtDesigner برای طراحی رابط کاربری استفاده نمایید، باید آن را نیز نصب نمایید. سپس آن را باید در پای چارم پیکره بندی نمایید. پس به مسیر زیر بروید.
File | Settings | Tools | PyCharm
Program: the path to your own designer
- Working directory:
$ProjectFileDir$
همچنین برای اینکه بتوانید از فایل *.ui که QtDesigner تولید کرده است، فایل پایتون ایجاد نمایید، باید PyUIC5.exe را نیز نصب نمایید. نحوه پیکره بندی PyUIC در پای ارم:
Program: Your own python.exe
- Arguments:
-x PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
- Working directory:
$ProjectFileDir$
در ادامه یک مثال ساده پایتون که با پای چارم ایجاد شده است را برای شما آورده ایم. در این مثال برای ارتباط بین کامپوننتهای گرافیکی از سیگنال و اسلات استفاده کرده ایم. خروجی آن در فیلم زیر اورده شده است.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QLabel
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 440)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setStyleSheet("background-color: #ff990e")
self.centralwidget.setObjectName("centralwidget")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(625, 50, 113, 20))
self.lineEdit.setObjectName("lineEdit")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(645, 85, 75, 23))
self.pushButton.setObjectName("pushButton")
self.SignalButton = QtWidgets.QPushButton(self.centralwidget)
self.SignalButton.setGeometry(QtCore.QRect(600, 200, 75, 23))
self.SignalButton.setObjectName("SignalButton")
self.SlotButton = QtWidgets.QPushButton(self.centralwidget)
self.SlotButton.setGeometry(QtCore.QRect(700, 200, 75, 23))
self.SlotButton.setObjectName("SlotButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 400, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(10, 10, 500, 400))
self.SignalButton.clicked.connect(self.b1_clicked)
self.SlotButton.clicked.connect(self.b2_clicked)
self.retranslateUi(MainWindow)
self.pushButton.clicked.connect(self.lineEdit.clear)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "NPT"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.SignalButton.setText(_translate("MainWindow", "SIGNAL"))
self.SlotButton.setText(_translate("MainWindow", "SLOT"))
def b1_clicked(self):
self.SlotButton.setText("Hello Slot")
pixmap = QPixmap('NPT-logo2.png')
self.label.setPixmap(pixmap)
def b2_clicked(self):
self.SlotButton.setText("Hello Signal")
pixmap = QPixmap('NPT-logo4.png')
self.label.setPixmap(pixmap)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())