Cross-platform applications with Python, PyQT and QT Desginer 5

Obsah
Python je programovací jazyk ke kterému charakteristická jako multiparadigm tak jako umožňuje programování s objektově orientovaným a funkčním paradigmatem, má standardizovanou knihovnu.
Existuje mnoho nástrojů a knihoven Pythonu pro vývoj softwaru a webových aplikací, v případě designu obrazovky můžeme použít různé knihovny jako např. wxPython, PyQt, PySide nebo PyGTK abychom mohli nakreslit naše rozhraní a poté programovat, existují také webové rámce jako Django, v tomto tutoriálu se podíváme na to, jak vytvářet multiplatformní desktopové aplikace pomocí PyQT 5.

PyQt5 je Knihovna nástrojů Pythonu pro něj Rámec QT5. Je k dispozici pro Python 3.x.
PyQt5 je implementován jako sada modulů Pythonu. Umožňuje nám propojit návrhy, které vytvoříme s QT Designer, a poté je umět přeložit pomocí Py Qt tak, aby byly spustitelné pod Pythonem ve všech operačních systémech, jako jsou Linux Windows a Mac OS.
Abychom mohli vyvíjet aplikace, musíme nainstalovat potřebné programy a závislosti. Tento tutoriál bude používat verzi Linux Mint jako operační systém, ale může být přizpůsoben jakémukoli operačnímu systému.
V jiných výukových programech používáme Qt k programování v C ++, multiplatformní programování v C ++ a Qt v prostředí GNU / Linux Environment a QT Programming a SQLite.
Nejprve si nainstalujeme QT Designer 5, z okna terminálu jej stáhneme a nainstalujeme
 $ 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
Dále musíme nainstalovat vývojové knihovny Pythonu:
 sudo apt-get install pyqt5-dev-tools
Dále musíme nainstalovat rozšíření Pythonu s názvem SIP, což je generátor kódu, který je speciálně navržen pro vytváření kódu Pythonu. To umožní čtení návrhového souboru Qt Designer a jeho překlad do kódu Pythonu. Vygenerovaný kód lze kompilovat pro Python v2 a v3.
Stáhněte si SIP z oficiálních webových stránek, poté přejdeme do složky, kam jsme jej stáhli, rozbalíme soubor sip-4.17.tar.gz, přistoupíme ke složce a nakonfigurujeme SIP a nainstalujeme s následujícím kódem z okna terminálu.
 python configure.py make make install
Nastavili jsme QT5 jako výchozí verzi:
 sudo apt-get install qt5-default
Nakonec stáhneme a nainstalujeme PyQt, což jsou knihovny, které budeme potřebovat k propojení Pythonu a QT Designer
Stáhněte si PyQt z jeho oficiálních webových stránek, poté přejdeme do složky, kam jsme jej stáhli, rozbalíme soubor PyQt a přistoupíme ke složce a nakonfigurujeme ji pomocí následujícího kódu z okna terminálu.
 python configure.py
Chystáme se vytvořit jednoduchou aplikaci od Qt designéra provedeme návrh převzetím formuláře, bude nás zajímat pouze soubor s příponou ui, který bude designovým rozhraním. Náš projekt se jmenuje Dialoga.

Dále vybereme typ okna, které bude naše aplikace používat, v tomto případě použijeme jako šablonu dialog se dvěma tlačítky.

Poté budeme mít obrazovku s naším oknem k návrhu, přidáme TextEdit a soubor uložíme

Poté přejdeme do složky projektů, vygenerují se také odpovídající soubory c ++, ale použijeme pouze soubor ui.
Dále z terminálu budeme muset přeložit soubor dialoga.ui do pythonu, z okna terminálu použijeme následující příkaz:
 pyuic5 -o dialoga.py dialoga.ui

Tím se vygeneruje soubor dialog.py, což je design, který jsme měli v jazyce C ++, který je nyní k dispozici v Pythonu, kód je následující
 # - * - kódování: utf -8 - * - # Implementace formuláře generovaná čtením souboru ui 'dialoga.ui' # # Vytvořeno: Po 26. října 21:31:56 2015 # od: PyQt5 Generátor uživatelského kódu 5.2.1 z PyQt5 import QtCore, QtGui, QtWidgets třída Ui_DialogA (objekt): def setupUi (self, DialogA): DialogA.setObjectName ("DialogA") DialogA.resize (400, 300) self.buttonBox = QtWidgets.QDialogButtonBox (DialogA) self.b DialogA) vlastní setGeometry (QtCore.QRect (30, 240, 341, 32)) self.buttonBox.setOrientation . ("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.QCoreA plication.translate DialogA.setWindowTitle (_translate ("DialogA", "Dialog"))
To je vše, co navrhujeme v Qt Designer, nyní to musíme propojit s kódem, který to používá, za tímto účelem vytvoříme soubor startup.py a napíšeme následující kód:
 importovat sys z PyQt5.QtWidgets importovat QApplication, QDialog z dialogu import * app = QApplication (sys.argv) okno = QDialog () ui = Ui_DialogA () ui.setupUi (okno) window.show () sys.exit (app.exec_ ())
Vidíme, že importujeme knihovny grafického zobrazení a importujeme dialog souboru s návrhem.
Potom označíme, že okno bude dialog, okno ui bude mít design definovaný ve třídě Ui_DialogA () definovaný v souboru návrhu a nakonec bude tento design přiřazen k oknu pomocí funkce setupUi.
Uložíme a spustíme z příkazového okna následujícím způsobem:
 python3 home.py

Níže vytvoříme jednoduchý, ale funkční textový editor. Vytvoříme nový projekt, kde nás bude zajímat tvorba grafických rozhraní. Projekt nazveme MyEditor.

Poté vybereme jako šablonu MainWindow. V návrhu můžeme mít menu a textovou zprávu. Zde bude důležité pojmenovat každý objekt tak, aby jej bylo možné později identifikovat a odkazovat na něj v kódu Pythonu. Poté uložíme a převedeme soubor ui do pythonu.
Převod provádíme z okna terminálu následujícím příkazem:
 pyuic5 -o mieditor.py mieditor.ui
Návrhový kód v pythonu bude následující:
 # - * - kódování: utf -8 - * - # Implementace formuláře generovaná čtením souboru ui '/testqt/mieditor.ui' # # Vytvořeno: Po 26. října 10:32:56 2015 # od: Generátor kódu uživatelského rozhraní PyQt5 5.2. 1 # # UPOZORNĚNÍ! Všechny změny provedené v tomto souboru budou ztraceny! z PyQt5 import QtCore, QMainWindow, QApplication, QtGui, QtWidgets třída Ui_MainWindow (objekt): def setupUi (self, MainWindow): MainWindow.setObjectName ("MainWindow") MainWindow.resize (533, 317) self.centralwidget (Q MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextitd (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 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.setOb 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 (Main action_Help (MainWindow) 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_ ) 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 MiEditor ", None, QApplicationGui", None, QApplicationGui ".UnicodeUTF8)) self.menu_File.setTitle (QtGui.QApplication.translate (" MainWindow "," & File ", None, QtGui.QApplication.UnicodeUTF8)) self.menu setTitle ("QtGui.QApplication.translate", "QtGui.QApplication.translate" & Help ", None, QtGui.QApplication.UnicodeUTF8)) self.action_Nuevo.setText (QtGui.QApplication.translate (" MainWindow "," , 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", None, QtGui.QApplication.UnicodeUTF8)) self.actionSave_As.setText (QtGui.QApplication.translate ("MainWindow", "Save & As", None, QtGui.QApplication.UnicodeUTF8))) self.action_Quit.setTeQ (QtGui 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", "& Technical Support", None, QtGui.QApplication.UnicodeUTF8)) 
Dále budeme muset naprogramovat kód, aby editoru poskytl funkčnost, vytvořit instanci každé nabídky a textové oblasti, kde je kód poměrně rozsáhlý, zde vyvíjíme pouze design rozhraní a jeho převod …
Vytvoření grafického uživatelského rozhraní s Qt Designer usnadňuje navrhování aplikací a je také skvělým výukovým nástrojem, protože kód bude záviset na nás.
Qt Designer vám umožňuje zobrazit vlastnosti každé komponenty před jejím překladem, programování lze provést také bez grafického rozhraní přímo v libovolném textovém editoru, pokud známe potřebné knihovny a jejich vlastnosti.
Python může také zpracovávat aplikace, které se připojují k databázím, jako je Mysql nebo Sqlite, prostřednictvím připojení a operací s databázemi s Pythonem můžeme do naší aplikace také přidat vizuální rozhraní vytvořené pomocí grafických knihoven Qt pomocí PyQt. Budeme dále postupovat s programováním grafických rozhraní pro uživatele s Python v jiném tutoriálu.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave