0% acharam este documento útil (0 voto)
110 visualizações19 páginas

QT Designer para PyQt6

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
110 visualizações19 páginas

QT Designer para PyQt6

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 19

28/03/2024, 11:27 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.

Instale as ferramentas 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.

Criar um novo ambiente virtual

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:

python -m venv D:\pyqt6\pyqt6-env

Ative o ambiente virtual

Primeiro, navegue até o pyqt6-env diretório de ambiente virtual:

cd D:\pyqt6\pyqt6-env

Em segundo lugar, navegue até o Scripts pasta:

cd Scripts

https://www.pythontutorial.net/pyqt/qt-designer/ 1/19
28/03/2024, 11:27 Qt Designer para PyQt6

Terceiro, ative o ambiente virtual executando o arquivo activ.bat:

activate

Ele mostrará o seguinte no Windows:

(pyqt6-env) d:\pyqt6\pyqt6-env\Scripts>

Instale o PyQt6 e suas ferramentas

Primeiro, execute o seguinte comando para instalar pyqt6 pacote no pyqt6-env ambiente
virtual:

pip install pyqt6

Segundo, instale o pyqt6-tools pacote que contém o Qt Designer e outras ferramentas


relacionadas:

pip install pyqt6-tools

O pyqt-tools o pacote instalará o Qt Designer no seguinte local:

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

E você verá a seguinte saída:

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

Do Shell, digite o designer comando para iniciar o Qt Designer:

(pyqt6-env) d:\pyqt6\pyqt6-env\Scripts>designer

O Qt Designer ficará assim:

Criando um formulário de login

Criaremos um formulário de login simples usando o designer do Qt e o carregaremos em


nosso programa Python.

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

Segundo, selecione o Widget do templates\forms e clique no Create botão:

https://www.pythontutorial.net/pyqt/qt-designer/ 4/19
28/03/2024, 11:27 Qt Designer para PyQt6

Isso criará um QWidget como segue:

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.

Configurando propriedades de widget

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:

Adicionando widgets ao formulário de login

Primeiro, adicione os widgets QLabel , QLineEdit , e QPushButton ao formulário:

https://www.pythontutorial.net/pyqt/qt-designer/ 7/19
28/03/2024, 11:27 Qt Designer para PyQt6

A tabela a seguir lista os campos, seus tipos e nomes:

Campo Widget Nome do objeto

Janela de Login QWidget login_form

Endereço de e-mail QLineEdit email_line_edit

Senha QLineEdit password_line_edit

Botão Login QPushButton btn_login

Em segundo lugar, defina o modo de eco do campo de senha para Password :

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

O formulário mudará para o seguinte:

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:

Quinto, salve o formulário no D:\pyqt6 diretório as login_form.ui arquivo.

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

Por fim, feche o Qt Designer.

Existem duas maneiras de usar o login_form . .ui de um programa Python:

1. Converta o arquivo.ui em código Python e use o código gerado no programa.

2. Use diretamente o arquivo.ui no programa.

Convertendo arquivo.ui em código Python

Primeiro, execute o seguinte comando para converter o login_form.ui arquivo para


login_form.py arquivo:

pyuic6 -o login_form.py login_form.ui

Observe que você precisa executar o pyuic6 do ambiente virtual pyqt6-env.

O pyuic6 gerou o login_form.py do login_form.ui arquivo. O login_form.py


contém o seguinte código Python gerado:

# Form implementation generated from reading ui file 'login_form.ui'


#
https://www.pythontutorial.net/pyqt/qt-designer/ 12/19
28/03/2024, 11:27 Qt Designer para PyQt6

# Created by: PyQt6 UI code generator 6.1.0


#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.

from PyQt6 import QtCore, QtGui, QtWidgets

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)

def retraduzirUi(eu, login_form):


_translate = QtCore.QCoreApplication.translate

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.

Segundo, crie o login.py arquivar e importar o login_ui.py arquivo:

import sys
from PyQt6.QtWidgets import QApplication, QWidget
from login_form import Ui_login_form

classe Login(QWidget):
def __init__(eu):
super().__init__()

# use the Ui_login_form


self.ui = Ui_login_form()
self.ui.setupUi(self)

# show the login window


self.show()

if __name__ == '__main__':
app = QApplication(sys.argv)
login_window = Login()
sys.exit(app.exec())

Como funciona.

1. Importar Ui_login_form classe do login_form.py arquivo

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

Terceiro, execute o login.py arquivo:

python login.py

Ele mostrará a janela de login:

Referenciando widgets filhos

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__()

# use the Ui_login_form


self.ui = Ui_login_form()
self.ui.setupUi(self)

# authenticate when the login button is clicked


self.ui.btn_login.clicked.connect(self.authenticate)

# show the login window

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 email == 'john@test.com' and password == '123456':


QMessageBox.information(self, 'Success',"You're logged in!")
else:
QMessageBox.critical(self, 'Error',"Invalid email or password.")

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)

Segundo, defina o authenticate() método que obtém valores do email_line_edit e


password_line_edit e realize uma verificação simples desses valores em relação aos

valores codificados:

def autenticar(eu):
email = self.ui.email_line_edit.text()
password = self.ui.password_line_edit.text()

if email == 'john@test.com' and password == '123456':


QMessageBox.information(self, 'Success',"You're logged in!")
else:
QMessageBox.critical(self, 'Error',"Invalid email or password.")

Aviso de Segurança: Nunca faça isso em aplicações reais.

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)

# authenticate when the login button is clicked


self.btn_login.clicked.connect(self.authenticate)

# show the login window


self.show()

def autenticar(eu):
email = self.email_line_edit.text()
password = self.password_line_edit.text()

if email == 'john@test.com' and password == '123456':


QMessageBox.information(self, 'Success',"You're logged in!")
else:
QMessageBox.critical(self, 'Error',"Invalid email or password.")

if __name__ == '__main__':
app = QApplication(sys.argv)
login_window = Login()
sys.exit(app.exec())

Usando o arquivo.ui diretamente

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:

from PyQt6.QtWidgets import QApplication, QWidget, QMessageBox


from PyQt6 import uic
import sys

classe Login(QWidget):
def __init__(eu):
super().__init__()
self.ui = uic.loadUi('login_form.ui', self)

# authenticate when the login button is clicked


self.ui.btn_login.clicked.connect(self.authenticate)

self.show()

def autenticar(eu):
email = self.email_line_edit.text()
password = self.password_line_edit.text()

if email == 'john@test.com' and password == '123456':


QMessageBox.information(self, 'Success',"You're logged in!")
else:
QMessageBox.critical(self, 'Error',"Invalid email or password.")

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.

Quando você deve usar o Qt Designer

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.

No entanto, se você estiver familiarizado com o PyQt e trabalhar em um aplicativo grande,


você deve usar o Qt Designer para criar um bom design e melhorar a produtividade.

Resumo
Use o Qt Designer para projetar interfaces de usuário para grandes aplicações.

Usar o pyuic6 ferramenta para converter um arquivo.ui em um arquivo de código-fonte


Python.

Usar loadUi() função do uic módulo para carregar o .ui arquivo diretamente.

https://www.pythontutorial.net/pyqt/qt-designer/ 19/19

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy