Aplicativos de plataforma cruzada com Python, PyQT e QT Desginer 5

Índice
Python é uma linguagem de programação para o qual o característica de ser multiparadigma já que permite a programação com um paradigma funcional e orientado a objetos, possui uma biblioteca padronizada.
Existem muitas ferramentas e bibliotecas Python para desenvolver software e aplicativos da web, no caso de design de tela podemos usar várias bibliotecas, como wxPython, PyQt, PySide ou PyGTK para desenhar nossa interface e depois programar, também existem frameworks web como Django, neste tutorial veremos como criar aplicativos de desktop multiplataforma usando PyQT 5.

PyQt5 é uma Biblioteca de ferramentas Python para o Framework QT5. Ele está disponível para Python 3.x.
PyQt5 é implementado como um conjunto de módulos Python. Ele nos permite vincular os designs que fazemos com o QT Designer e, em seguida, sermos capazes de traduzi-los com Py Qt para que sejam executáveis ​​em Python em todos os sistemas operacionais, como Linux Windows e Mac OS.
Para o desenvolvimento de aplicações, devemos instalar os programas e dependências necessários, este tutorial utilizará uma versão do Linux Mint como sistema operacional, mas pode ser adaptado a qualquer sistema operacional.
Em outros tutoriais usamos Qt para programar em C ++, Programação Multiplataforma em C ++ e Qt no ambiente GNU / Linux e Programação QT e bancos de dados SQLite.
Vamos primeiro instalar o QT Designer 5, a partir de uma janela de terminal, baixamos e instalamos
 $ 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
Em seguida, devemos instalar as bibliotecas de desenvolvimento Python:
 sudo apt-get install pyqt5-dev-tools
Em seguida, devemos instalar uma extensão Python chamada SIP, que é um gerador de código projetado especificamente para a criação de código Python. Isso permitirá que o arquivo de design do Qt Designer seja lido e traduzido para o código Python. O código gerado pode ser compilado para Python v2 e v3.
Baixamos o SIP do site oficial, depois vamos para a pasta onde baixamos, descompactamos o arquivo sip-4.17.tar.gz, acessamos a pasta e configuramos o SIP e instalamos com o seguinte código da janela do terminal.
 python configure.py make make install
Definimos QT5 como a versão padrão:
 sudo apt-get install qt5-default
Por fim, baixamos e instalamos o PyQt, que são as bibliotecas de que precisaremos para vincular o Python e o QT Designer
Baixe PyQt de seu site oficial, então vamos para a pasta onde baixamos, descompacte o arquivo PyQt e acesse a pasta e configure-o com o seguinte código na janela do terminal.
 python configure.py
Vamos criar um aplicativo simples do Qt designer, faremos o design tomando um formulário, estaremos interessados ​​apenas no arquivo com a extensão ui que será a interface do design. Nosso projeto se chama Dialoga.

Em seguida, selecionaremos o tipo de janela que nosso aplicativo usará, neste caso, usaremos uma caixa de diálogo com dois botões como modelo.

Então teremos a tela com nossa janela para desenhar, adicionamos um TextEdit e salvamos o arquivo

Em seguida, vamos para a pasta de projetos, os arquivos c ++ correspondentes também serão gerados, mas usaremos apenas o arquivo ui.
Em seguida, a partir do terminal, teremos que traduzir o arquivo dialoga.ui em python, na janela do terminal, usamos o seguinte comando:
 pyuic5 -o dialoga.py dialoga.ui

Isso gera o arquivo dialog.py que é o design que tínhamos em c ++ agora disponível em Python, o código é o seguinte
 # - * - coding: utf-8 - * - # Implementação do formulário gerada a partir da leitura do arquivo ui 'dialoga.ui' # # Criado: Seg 26 de outubro 21:31:56 2015 # por: PyQt5 UI code generator 5.2.1 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_DialogA (objeto): def setupUi (self, DialogA): DialogA.setObjectName ("DialogA") DialogA.resize (400, 300) self.buttonBox = QtWidgets.QDialogButtonBox (DialogA) (self.buttonBox (DialogA) DialogA) self. SetGeometry (QtCore.QRect (30, 240, 341, 32)) self.buttonBox.setOrientation (QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons (QtWidgets.QDialogButtonBox.Cancelset | QtWidtonObuttonButtonButtonButtonButtonButtonDogButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonButtonBoggets.Qt . ("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.Q plication.translate DialogA.setWindowTitle (_translate ("DialogA", "Dialog"))
Isso é tudo o que desenhamos no Qt Designer, agora devemos vinculá-lo a um código que o utiliza, para isso criaremos um arquivo startup.py e escreveremos o seguinte código:
 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_ ())
Vemos que importamos as bibliotecas de telas gráficas e importamos a caixa de diálogo do arquivo com o design.
Em seguida, indicamos que a janela será um diálogo, a janela ui terá o design definido na classe Ui_DialogA () definida no arquivo de design e, finalmente, esse design é atribuído à janela através da função setupUi.
Salvamos e executamos a partir da janela de comando da seguinte maneira:
 python3 home.py

Vamos criar um editor de texto simples, mas funcional abaixo. Vamos criar um novo projeto onde estamos interessados ​​em criar as interfaces gráficas. Vamos chamar o projeto de MyEditor.

Em seguida, selecionamos MainWindow como modelo. No design podemos ter um menu e uma mensagem de texto. Aqui, será importante dar um nome a cada objeto para que possa ser identificado posteriormente e referenciado no código Python. Em seguida, salvamos e convertemos o arquivo ui em python.
Fazemos a conversão a partir da janela do terminal com o seguinte comando:
 pyuic5 -o mieditor.py mieditor.ui
O código de design em python será o seguinte:
 # - * - coding: utf-8 - * - # Implementação do formulário gerado a partir da leitura do arquivo ui '/testqt/mieditor.ui' # # Criado: Seg 26 de outubro 10:32:56 2015 # por: Gerador de código de IU PyQt5 5.2. 1 # # AVISO! Todas as alterações feitas neste arquivo serão perdidas! de PyQt5 import QtCore, QMainWindow, QApplication, QtGui, QtWidgets class Ui_MainWindow (objeto): def setupUi (self, MainWindow): MainWindow.setObjectName ("MainWindow") MainGindow.resize (533, 317Gui. MainWindow) self.centralwidget.setObjectName ("centralwidget") self.gridLayout = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QGridLayout (self.centralwidget) self.gridLayout.setObjectName ("gridLayout") self.textEdit = QtGui.QTextEdit (self.centraldit) Self.textEdit (self.centraldit). (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 = QtGui.QStatusbar = 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 (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.setObjectName ("actionSave_AssetObjectName) 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) self.action_Help = QtGui.QAction (MainWindow). 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.addActionAs (self.menu_File.addActionAs (self.action_Open) ) 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_QuitAL, QtCore.SIGN (self.action_QuitAL) self.action_Quit, QtCore.SIGNAL ("triggered ()"), MainWindow.close) QtCore.QMetaObject.connectSlotsByName (MainWindow) def retranslateUi (self, MainWindow): MainWindow.setWindowTitle (QtGui.Qanslate. "MainWindow", " MiEditor ", None, QApplicationGui", None, QApplicationGui ".UnicodeUTF8)) self.menu_File.setTitle (QtGui.QApplication.translate (" MainWindow "," & File ", None, QtGui.QApplication.Unicode8) self setTitle ("QtGui.QApplication.translate", "QtGui.QApplication.translate" & Help ", None, QtGui.QApplication.UnicodeUTF8)) self.action_Nuevo.setText (QtGui.QApplication.translate," Main & New " , Nenhum, QtGui.QApplication.UnicodeUTF8)) self.action_Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText (QtGui.Abrir.setText) .translate ("MainWindow", "& Open", Nenhum, QtGui. QApplication.UnicodeUTF8)) self.action_Save.setText (QtGui.QApplication.translate ("MainWindow", "& Salvar", Nenhum, QtGui.QApplication.UnicodeUTF8)) self.actionSave_As.setText (QtGui.QApplication.translate ("MainWindow", "Salvar & como", Nenhum, QtGui.QApplication.UnicodeUTF8))) self.action_Quit.setText (QtuiG 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", "& Suporte Técnico", Nenhum, QtGui.QApplication.UnicodeUTF8)) 
A seguir teremos que programar o código para dar funcionalidade ao editor, instanciando cada menu e a textarea o código é bastante extenso, aqui apenas desenvolvemos o design da interface e sua conversão …
A criação da interface gráfica do usuário com o Qt Designer, facilita o design de aplicativos e também é uma ótima ferramenta de aprendizado, já que o código dependerá de nós.
O Qt Designer permite que você veja as propriedades de cada componente antes de traduzi-lo, a programação também pode ser feita sem a interface gráfica diretamente em qualquer editor de texto, se conhecermos as bibliotecas necessárias e suas propriedades.
Python também pode lidar com aplicativos que se conectam a bancos de dados como Mysql ou Sqlite, por meio de uma conexão e operações em bancos de dados com Python, também podemos adicionar uma interface visual ao nosso aplicativo criado com as bibliotecas gráficas de Qt usando PyQt. Avançaremos ainda mais com a programação de interfaces gráficas para usuários com Python em outro tutorial.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo
wave wave wave wave wave