Applicazioni multipiattaforma con Python, PyQT e QT Desginer 5

Sommario
Python è un linguaggio di programmazione a cui il caratteristica di essere multiparadigma come permette di programmare con un paradigma orientato agli oggetti e funzionale, dispone di una libreria standardizzata.
Esistono molti strumenti e librerie Python per sviluppare software e applicazioni web, nel caso del design dello schermo possiamo utilizzare varie librerie come wxPython, PyQt, PySide o PyGTK per disegnare la nostra interfaccia e poi programmare, esistono anche framework web come Django, in questo tutorial vedremo come creare applicazioni desktop multipiattaforma utilizzando PyQT 5.

PyQt5 è un Libreria di strumenti Python per lui Quadro QT5. È disponibile per Python 3.x.
PyQt5 è implementato come un insieme di moduli Python. Ci consente di collegare i progetti che realizziamo con QT Designer e quindi essere in grado di tradurli con Py Qt in modo che siano eseguibili sotto Python in tutti i sistemi operativi come Linux Windows e Mac OS.
Per sviluppare applicazioni, dobbiamo installare i programmi e le dipendenze necessari.Questo tutorial utilizzerà una versione di Linux Mint come sistema operativo, ma può essere adattato a qualsiasi sistema operativo.
In altri tutorial utilizziamo Qt per programmare in C++, Programmazione multipiattaforma in C++ e Qt in ambiente GNU/Linux e Programmazione QT e database SQLite.
Installiamo prima QT Designer 5, da una finestra di terminale lo scarichiamo e lo installiamo
 $ wget http://download.qt-project.org/official_releases/qt/5.3/5.3.0/qt-Abrirsource-linux-x64-5.3.0.run $ chmod + x qt-Abrirsource-linux-x64-5.3 .0.run $ sudo ./qt-Abrirsource-linux-x64-5.3.0.run
Successivamente dobbiamo installare le librerie di sviluppo Python:
 sudo apt-get install pyqt5-dev-tools
Successivamente dobbiamo installare un'estensione Python chiamata SIP che è un generatore di codice progettato specificamente per la creazione di codice Python. Ciò consentirà al file di progettazione di Qt Designer di essere letto e tradotto in codice Python. Il codice generato può essere compilato per Python v2 e v3.
Scarichiamo SIP dal sito ufficiale, quindi andiamo nella cartella dove l'abbiamo scaricato, decomprimiamo il file sip-4.17.tar.gz, accediamo alla cartella e configuriamo SIP e installiamo con il seguente codice dalla finestra del terminale.
 python configure.py make make install
Impostiamo QT5 come versione predefinita:
 sudo apt-get install qt5-default
Infine scarichiamo e installiamo PyQt che sono le librerie di cui avremo bisogno per collegare Python e QT Designer
Scarichiamo PyQt dal suo sito ufficiale, quindi andiamo nella cartella dove l'abbiamo scaricato, decomprimiamo il file PyQt e accediamo alla cartella e configuriamolo con il seguente codice dalla finestra del terminale.
 python configure.py
Creeremo una semplice applicazione da Qt designer, realizzeremo il design prendendo un modulo, ci interesserà solo il file con l'estensione ui che sarà l'interfaccia di design. Il nostro progetto si chiama Dialoga.

Successivamente selezioneremo il tipo di finestra che utilizzerà la nostra applicazione, in questo caso utilizzeremo una finestra di dialogo con due pulsanti come modello.

Quindi avremo lo schermo con la nostra finestra da progettare, aggiungiamo un TextEdit e salviamo il file

Quindi andiamo nella cartella dei progetti, saranno stati generati anche i file c ++ corrispondenti ma utilizzeremo solo il file ui.
Successivamente dal terminale dovremo tradurre il file dialoga.ui in python, dalla finestra del terminale utilizziamo il seguente comando:
 pyuic5 -o dialoga.py dialoga.ui

Questo genera il file dialog.py che è il design che avevamo in c ++ ora disponibile in Python, il codice è il seguente
 # - * - coding: utf-8 - * - # Implementazione del modulo generata dalla lettura del file ui 'dialoga.ui' # # Creato: Mon Oct 26 21:31:56 2015 # da: PyQt5 UI code generator 5.2.1 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_DialogA (oggetto): def setupUi (self, DialogA): DialogA.setObjectName ("DialogA") DialogA.resize (400, 300) self.buttonBox = QtWidgets.QDialogButtonBox (DialogA) self.buttonBox ( DialogA) self.setGeometry (QtCore.QRect (30, 240, 341, 32)) self.buttonBox.setOrientation (QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons (QtWidgets.QDialogButtonBox.Cancel | QtWidgets.QDialogtonBsetButtonOsetObutton.QDialogtonButtonOsetObutton.QDialogton ("buttonBox") self.textEdit = QtWidgets.QTextEdit (DialogA) self.textEdit.setGeometry (QtCore.QRect (20, 20, 361, 201)) self.textEdit.setObjectName ("textEdit") self.retranslateUi (DialogA ) self.buttonBox.accepted.connect (DialogA.accept) self.buttonBox.rejected.connect (DialogA.reject) QtCore.QMetaObject.connectSlotsByName (DialogA) def retranslateUi (self, DialogA): _translate = QtCore.QCoreAp plication.translate DialogA.setWindowTitle (_translate ("DialogA", "Dialog"))
Questo è tutto ciò che progettiamo in Qt Designer, ora dobbiamo collegarlo a un codice che lo utilizza, per questo creeremo un file startup.py e scriveremo il seguente codice:
 import sys from PyQt5.QtWidgets import QApplication, QDialog from dialoga import * app = QApplication (sys.argv) window = QDialog () ui = Ui_DialogA () ui.setupUi (window) window.show () sys.exit (app.exec_ ())
Vediamo che importiamo le librerie di visualizzazione grafica e importiamo la finestra di dialogo del file con il disegno.
Quindi indichiamo che la finestra sarà una finestra di dialogo, la finestra dell'interfaccia utente avrà il design definito nella classe Ui_DialogA() definita nel file di design e infine che il design è assegnato alla finestra tramite la funzione setupUi.
Salviamo ed eseguiamo dalla finestra di comando come segue:
 python3 home.py

Di seguito creeremo un editor di testo semplice ma funzionale. Creeremo un nuovo progetto dove siamo interessati a creare le interfacce grafiche. Chiameremo il progetto MyEditor.

Selezioniamo quindi MainWindow come modello. Nel design possiamo avere un menu e un textedit. Qui sarà importante dare un nome a ciascun oggetto in modo che possa essere identificato in seguito e referenziato dal codice Python. Quindi lo salviamo e convertiamo il file ui in python.
Eseguiamo la conversione dalla finestra del terminale con il seguente comando:
 pyuic5 -o mieditor.py mieditor.ui
Il codice di progettazione in python sarà il seguente:
 # - * - coding: utf-8 - * - # Implementazione del modulo generata dalla lettura del file ui '/testqt/mieditor.ui' # # Creato: Mon Oct 26 10:32:56 2015 # da: PyQt5 UI code generator 5.2. 1 # # ATTENZIONE! Tutte le modifiche apportate a questo file andranno perse! from PyQt5 import QtCore, QMainWindow, QApplication, QtGui, QtWidgets class Ui_MainWindow (oggetto): def setupUi (self, MainWindow): MainWindow.setObjectName ("MainWindow") MainWindow.resize (533, 317) self.centralwidget.QtGui. MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextEdit (self.centraldit.) Self.textEdit (self.centraldit.) Self.textEdit (self.centraldit.) setObjectName ("textEdit") self.gridLayout.addWidget (self.textEdit, 0, 0, 1, 1) MainWindow.setCentralWidget (self.centralwidget) self.menubar = QtGui.QMenuBar (MainWindow) self.menubar.setGeometry (QtCore. QRect (0, 0, 533, 25)) self.menubar.setObjectName ("menubar") self.menu_File = QtGui.QMenu (self.menubar) self. menu_File.setObjectName ("menu_File") self.menu_Help = QtGui.QMenu (self.menubar) self.menu_Help.setObjectName ("menu_Help") MainWindow.setMenuBar (self.menubar) self.statusbar = QtGui.QStatusBar (MainWindow) self. statusbar.setObjectNam e ("statusbar") MainWindow.setStatusBar (self.statusbar) self.action_New = QtGui.QAction (MainWindow) self.action_Nuevo.setObjectName ("action_New") self.action_Open = QtGui.QAction (MainWindow) self.action_bjectName (MainWindow) self.action_bjectName (SetObjectName) "action_Abrir") self.action_Save = QtGui.QAction (MainWindow) self.action_Save.setObjectName ("action_Save") self.actionSave_As = QtGui.QAction (MainWindow) self.actionSave_As.setANames") ("actionSave") self.action_Quit.QAction (MainWindow) self.action_Quit.setObjectName ("action_Quit") self.actionA_bout = QtGui.QAction (MainWindow) self.actionA_bout.setObjectName ("actionA_bout") self.action_Help = QtGui.QAction (.MainWindow) self.action_Help = QtGui.QAction (.MainWindow) action_Help (Finestra principale) self.action_Help "action_Help") self.menu_File.addAction (self.action_New) self.menu_File.addAction (self.action_Open) self.menu_File.addAction (self.action_Save) self.menu_File.addAction (self.menu_As ) self.menu_File (self.ActionSave_As) self.menu_File self.action_Quit) self.menu_Help.addAction (self.actionA_bout) self.menu_Help.addAction (self. action_Help) self.menubar.addAction (self.menu_File.menuAction ()) self.menubar.addAction (self.menu_Help.menuAction ()) self.retranslateUi (MainWindow) QtCore.QObject.connect (self.action_Quit, QtCore.SIGNAL ( self.action_Quit, QtCore.SIGNAL ("triggered ()"), MainWindow.close) QtCore.QMetaObject.connectSlotsByName (MainWindow) def retranslateUi (self, MainWindow): MainWindow.setWindowTitle (QtGui.QApplication.translate", "MainWindow MiEditor", None, QApplicationGui ", None, QApplicationGui" .UnicodeUTF8)) self.menu_File.setTitle (QtGui.QApplication.translate ("MainWindow", "& File", None, QtGui.QApplication.UnicodeUTF8)) self.menu_Help. setTitle ("QtGui.QApplication.translate", "QtGui.QApplication.translate" & Help ", None, QtGui.QApplication.UnicodeUTF8)) self.action_Nuevo.setText (QtGui.QApplication.translate (" MainWindow "," & New " , None, QtGui.QApplication.UnicodeUTF8)) self.action_Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText) .translate ("MainWindow", "& Open", None, QtGui. QApplication.UnicodeUTF8)) self.action_Save.setText (QtGui.QApplication.translate ("MainWindow", "& Save", Nessuno, QtGui.QApplication.UnicodeUTF8)) self.actionSave_As.setText (QtGui.QApplication.translate ("MainWindow", "Save & As", None, QtGui.QApplication.UnicodeUTF8))) self.action_Quit.setText (QtGui.QApplication ("QtGui.QApplication self.translate") MainWindow "," & Exit ", None, QtGui.QApplication.UnicodeUTF8)) self.actionA_bout.setText (QtGui.QApplication.translate (" MainWindow "," To & near ", None, QtGui.QApplication. UnicodeUTFelp8)) self.action_HnicodeUTFelp8)). setText (QtGui.QApplication.translate ("MainWindow", "& Supporto tecnico", Nessuno, QtGui.QApplication.UnicodeUTF8)) 
Successivamente dovremo programmare il codice per dare funzionalità all'editor, istanziando ogni menu e la textarea il codice è piuttosto esteso, qui sviluppiamo solo il design dell'interfaccia e la sua conversione …
La creazione dell'interfaccia utente grafica con Qt Designer, rende più semplice la progettazione di applicazioni ed è anche un ottimo strumento di apprendimento poiché il codice dipenderà da noi.
Qt Designer permette di vedere le proprietà di ogni componente prima di tradurlo, la programmazione può essere fatta anche senza l'interfaccia grafica direttamente in qualsiasi editor di testo se conosciamo le librerie necessarie e le loro proprietà.
Python può anche gestire applicazioni che si collegano a database come Mysql o Sqlite, attraverso una connessione e operazioni su database con Python, possiamo anche aggiungere un'interfaccia visiva alla nostra applicazione creata con le librerie grafiche di Qt usando PyQt. Avanzeremo ulteriormente con la programmazione di interfacce grafiche per utenti con Python in un altro tutorial.Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo
wave wave wave wave wave