QT Designer para PyQt6
QT Designer para PyQt6
Designer QT
Resumo: neste tutorial, você aprenderá como usar a ferramenta Qt Designer para projetar
interfaces de usuário para aplicativos PyQt.
As ferramentas PyQt6 são compatíveis com Python 3.9 no momento da redação deste
tutorial. Portanto, você precisa instalar o Python 3.9 para continuar o tutorial.
Observe que se você tiver o Python 3.10 ou superior, poderá instalar o Python 3.9 em
um diretório separado e usar as ferramentas do PyQt6. Por exemplo, você pode instalar
o Python 3.9 no diretório C:\Python39 no Windows.
Primeiro, crie um diretório para hospedar os projetos PyQt6 por exemplo, D:\pyqt6
mkdir pyqt6
Segundo, criar um ambiente virtual usando Python 3.9 usando o venv módulo:
cd D:\pyqt6\pyqt6-env
cd Scripts
https://www.pythontutorial.net/pyqt/qt-designer/ 1/19
28/03/2024, 11:27 Qt Designer para PyQt6
activate
(pyqt6-env) d:\pyqt6\pyqt6-env\Scripts>
Primeiro, execute o seguinte comando para instalar pyqt6 pacote no pyqt6-env ambiente
virtual:
D:\pyqt6\pyqt6-env\Lib\site-packages\qt6_applications\Qt\bin\designer.exe
Terceiro, execute o pyuic6 comando (dentro do pyqt6-env ambiente virtual) para verificar
a versão:
pyuic6 -V
6.1.0
O pyuic6 é uma ferramenta para converter um arquivo de design ( .ui ) gerado pelo Qt
Designer para um arquivo Python ( .py ).
https://www.pythontutorial.net/pyqt/qt-designer/ 2/19
28/03/2024, 11:27 Qt Designer para PyQt6
Lançar o Qt Designer
(pyqt6-env) d:\pyqt6\pyqt6-env\Scripts>designer
Primeiro, selecione File > New ou pressione Ctrl-N atalho de teclado para abrir a caixa
de diálogo Novo Formulário:
https://www.pythontutorial.net/pyqt/qt-designer/ 3/19
28/03/2024, 11:27 Qt Designer para PyQt6
https://www.pythontutorial.net/pyqt/qt-designer/ 4/19
28/03/2024, 11:27 Qt Designer para PyQt6
https://www.pythontutorial.net/pyqt/qt-designer/ 5/19
28/03/2024, 11:27 Qt Designer para PyQt6
Você pode definir o layout do widget e arrastar e soltar widgets da caixa do widget para o
formulário.
No Editor de Propriedades, você pode definir um nome para o widget, por exemplo.,
login_form
https://www.pythontutorial.net/pyqt/qt-designer/ 6/19
28/03/2024, 11:27 Qt Designer para PyQt6
e o título da janela:
https://www.pythontutorial.net/pyqt/qt-designer/ 7/19
28/03/2024, 11:27 Qt Designer para PyQt6
https://www.pythontutorial.net/pyqt/qt-designer/ 8/19
28/03/2024, 11:27 Qt Designer para PyQt6
Terceiro, clique com o botão direito no widget e defina seu layout como Layout do
formulário:
https://www.pythontutorial.net/pyqt/qt-designer/ 9/19
28/03/2024, 11:27 Qt Designer para PyQt6
https://www.pythontutorial.net/pyqt/qt-designer/ 10/19
28/03/2024, 11:27 Qt Designer para PyQt6
Quarto, altere o tamanho do Login botão definindo sua Política de Tamanho Horizontal
como Corrigida:
Sexto, selecione Form > Preview... menu ou o atalho do teclado Ctrl-R para visualizar o
formulário:
https://www.pythontutorial.net/pyqt/qt-designer/ 11/19
28/03/2024, 11:27 Qt Designer para PyQt6
classe Ui_login_form(objeto):
def setupUi(eu, login_form):
login_form.setObjectName("login_form")
login_form.resize(269, 108)
self.formLayout = QtWidgets.QFormLayout(login_form)
self.formLayout.setObjectName("formLayout")
self.label = QtWidgets.QLabel(login_form)
self.label.setObjectName("label")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, sel
self.email_line_edit = QtWidgets.QLineEdit(login_form)
self.email_line_edit.setObjectName("email_line_edit")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, sel
self.label_2 = QtWidgets.QLabel(login_form)
self.label_2.setObjectName("label_2")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, sel
self.password_line_edit = QtWidgets.QLineEdit(login_form)
self.password_line_edit.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
self.password_line_edit.setObjectName("password_line_edit")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, sel
self.btn_login = QtWidgets.QPushButton(login_form)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtW
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.btn_login.sizePolicy().hasHeightForWidth
self.btn_login.setSizePolicy(sizePolicy)
self.btn_login.setObjectName("btn_login")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, sel
self.retranslateUi(login_form)
QtCore.QMetaObject.connectSlotsByName(login_form)
https://www.pythontutorial.net/pyqt/qt-designer/ 13/19
28/03/2024, 11:27 Qt Designer para PyQt6
login_form.setWindowTitle(_translate("login_form", "Login"))
self.label.setText(_translate("login_form", "Email Address"))
self.label_2.setText(_translate("login_form", "Password"))
self.btn_login.setText(_translate("login_form", "Login"))
É importante notar que você nunca deve alterar manualmente o arquivo login_form.py.
Porque todos os seus ajustes manuais serão perdidos se você editar o login_form.ui
no Qt Designer e regenerar o login_form.py novamente.
import sys
from PyQt6.QtWidgets import QApplication, QWidget
from login_form import Ui_login_form
classe Login(QWidget):
def __init__(eu):
super().__init__()
if __name__ == '__main__':
app = QApplication(sys.argv)
login_window = Login()
sys.exit(app.exec())
Como funciona.
2. Crie uma nova instância do Ui_login_form e ligue para o setupUi() método para
configurar as interfaces de usuário.
https://www.pythontutorial.net/pyqt/qt-designer/ 14/19
28/03/2024, 11:27 Qt Designer para PyQt6
python login.py
Para usar os widgets filhos de Ui_login_form widget, você faz referência aos nomes deles
usando o self.ui variável.
Por exemplo, você pode adicionar uma autenticação simples quando o usuário insere um
endereço de e-mail e senha e clicar no botão Login da seguinte forma:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QMessageBox
from login_form import Ui_login_form
classe Login(QWidget):
def __init__(eu):
super().__init__()
https://www.pythontutorial.net/pyqt/qt-designer/ 15/19
28/03/2024, 11:27 Qt Designer para PyQt6
self.show()
def autenticar(eu):
email = self.ui.email_line_edit.text()
password = self.ui.password_line_edit.text()
if __name__ == '__main__':
app = QApplication(sys.argv)
login_window = Login()
sys.exit(app.exec())
Como funciona.
Primeiro, conecte o sinal clicado do botão ao método de autenticação. Observe que fazemos
referência ao btn_login botão através do self.ui variável:
self.ui.btn_login.clicked.connect(self.authenticate)
valores codificados:
def autenticar(eu):
email = self.ui.email_line_edit.text()
password = self.ui.password_line_edit.text()
https://www.pythontutorial.net/pyqt/qt-designer/ 16/19
28/03/2024, 11:27 Qt Designer para PyQt6
Além de criar uma instância do Ui_login_form dentro da janela de login, você pode herdar
o Ui_login_form janela usando heranças múltiplas e faça referência direta aos widgets
infantis como este:
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QMessageBox
from login_form import Ui_login_form
classe Login(QWidget,Ui_login_form):
def __init__(eu):
super().__init__()
# setup the UI
self.setupUi(self)
def autenticar(eu):
email = self.email_line_edit.text()
password = self.password_line_edit.text()
if __name__ == '__main__':
app = QApplication(sys.argv)
login_window = Login()
sys.exit(app.exec())
https://www.pythontutorial.net/pyqt/qt-designer/ 17/19
28/03/2024, 11:27 Qt Designer para PyQt6
Outra forma de utilizar o design gerado pelo Qt Designer é carregar o .ui arquivo
diretamente usando o loadUi() função do uic módulo:
classe Login(QWidget):
def __init__(eu):
super().__init__()
self.ui = uic.loadUi('login_form.ui', self)
self.show()
def autenticar(eu):
email = self.email_line_edit.text()
password = self.password_line_edit.text()
if __name__ == '__main__':
app = QApplication(sys.argv)
login_window = Login()
sys.exit(app.exec())
O loadUi() a função retorna uma instância do QWidget e você pode fazer referência aos
widgets infantis por meio do self.ui variável.
O arquivo.ui gerado pelo designer Qt cria uma camada de abstração entre o widget
disponível e o código que o consome.
https://www.pythontutorial.net/pyqt/qt-designer/ 18/19
28/03/2024, 11:27 Qt Designer para PyQt6
Portanto, se você estiver começando com PyQt, deverá codificar o UI manualmente em vez
de usar o Qt Designer. Ao fazer isso, você sabe exatamente quais widgets estão disponíveis
no aplicativo.
Resumo
Use o Qt Designer para projetar interfaces de usuário para grandes aplicações.
Usar loadUi() função do uic módulo para carregar o .ui arquivo diretamente.
https://www.pythontutorial.net/pyqt/qt-designer/ 19/19