É possível criar uma GUI (Interface Gráfica do Usuário) para os códigos do Python e empacotar tudo em um arquivo .EXE do Windows. O programa que criaremos será como o exemplo abaixo e se chamará “MeuProg.exe”.

A interface gráfica (frontend) será construída visualmente, usando um programa chamado QtDesigner. Esse programa irá gerar um arquivo .ui que será linkado com o código em Python (.py), que rege a lógica do programa, também chamado de backend.

Finalmente, o código em Pyhton (.py) será transformado em arquivo .exe, que poderá rodar em qualquer computador, desde que acompanhado pelo arquivo .ui.


Vamos precisar intalar:

  1. Python - Mesmo que o Anaconda esteja instalado, é necessário instalar o Python.
    https://www.python.org/downloads
  2. Miniconda - Miniconda é um instalador de pacotes do Python que tem tudo o que você precisa.
    https://docs.conda.io/en/latest/miniconda.html
  3. QtDesigner - É o programa que nos auxiliará a criar a interface gráfica e criar o arquivo .ui
    https://build-system.fman.io/qt-designer-download
  4. PyQt5 - Biblioteca que fará o link entre o QGDesigner e o código em Python. Para instalar, abra o terminal do Miniconda e digite:
    pip install PyQt5
  5. pyinstaller - Biblioteca que criará o arquivo executável (.exe). Para instalar, abra o terminal do Miniconda e digite:
    pip install pyinstaller
  6. VScode - Para trabalhar simultaneamente com Frontend e Backend, o VScode oferece muito mais vantagens do que o Jupyter Lab.

Com tudo instalado, vamos abrir o QtDesigner. Cria-se a interface usando os widgets, como botões, caixas de texto, caixa de checagem etc. As propriedades de cada widget devem ser ajustadas, prestando atenção à propriedade “objectName” e “text”, que serão usados posteriormente nos códigos em Python.

A tela do QtDesigner com a janela do programa finalizado é mostrado abaixo. Quando tudo estiver pronto, o arquivo .ui deverá ser salvo, com o nome “MeuProg.ui”.


Na mesma pasta do arquivo MeuProg.ui será criado um arquivo de texto vazio chamado MeuProg.py, que deverá ser aberto pelo VSCode.

O esqueleto inicial do código que vai no arquivo MeuProg.py é o seguinte:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets, uic
import PyQt5.QtWidgets

qtCreatorFile = "MeuProg.ui" #Esse é o arquivo .ui gerado pelo QtDesigner
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)


class MyWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)

#### Aqui começam os códigos que manipulam os widgets
    

#### Aqui terminam os códigos que manipulam os widgets

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

O código que precisamos incluir para fazer o cálculo está abaixo:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets, uic
import PyQt5.QtWidgets

qtCreatorFile = "MeuProg.ui" #Esse é o arquivo .ui gerado pelo QtDesigner
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)


class MyWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)

        self.wdg_btn_calc.clicked.connect(self.func_calc)

#### Aqui começam os códigos que manipulam os widgets
    
    def func_calc(self):
        n1 = int(self.wdg_edit1.text())
        n2 = int(self.wdg_edit2.text())
        n = n1 + n2 
        self.wdg_label_result.setText(str(n))        
    
#### Aqui terminam os códigos que manipulam os widgets

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

Uma vez que o programa tenha sido bem testado, o último passo é criar o executável. Para isso, os arquivos .py e .ui deverão estar na mesma pasta. Digite o seguinte código no terminal do Miniconda:

pyinstaller --onefile -w  MeuProg.py

Duas novas pastas serão criadas: “dist” e “build”. Dentro da pasta “dist” estará o arquivo MeuProg.exe.

Para que o programa funcione, é necessário copiar o arquivo MeuProg.ui para a pasta “dist”.

Ambos os arquivos precisam ficar juntos para funcionar em outros computadores.

Assista o vídeo com todos esses passos explicadinhos: https://youtu.be/jXkMpSRq8cc

Fim!