Resumo : neste tutorial, você aprenderá como criar um aplicativo PyQt que exibe a mensagem Hello World.
Instalando o pacote PyQt
PyQt é uma ligação Python para o kit de ferramentas de aplicativos multiplataforma Qt . Como PyQt é um pacote de terceiros, você precisa instalá-lo antes de usar.
PyQt6 é a versão mais recente do PyQt no momento em que este tutorial foi escrito. Para instalar PyQt6 usando PyPI no Windows, use o seguinte pip
comando:
pip install PyQt6
Linguagem de código: Python ( python )
Se você usa macOS ou Linux, você precisa usar o pip3
comando:
pip3 install PyQt6
Linguagem de código: Python ( python )
Criando o primeiro programa PyQt
O programa a seguir exibe uma janela com o título Hello World
na tela:
from PyQt6.QtWidgets import QApplication, QWidget
# create the QApplication
app = QApplication([])
# create the main window
window = QWidget(windowTitle='Hello World')
window.show()
# start the event loop
app.exec()
Linguagem de código: Python ( python )
Para executar o aplicativo, você usa o python
comando:
python main.py
Linguagem de código: Python ( python )
Se você usa macOS ou Linux, pode usar o python3
comando:
python3 main.py
Linguagem de código: Python ( python )
O seguinte mostra a janela:
Como funciona.
Primeiro, importe as classes QApplication
e QMainWidget
de PyQt6.Widgets
:
from PyQt6.QtWidgets import QApplication, QWidget
Linguagem de código: Python ( python )
Segundo, crie um QApplication
objeto:
app = QApplication(sys.argv)
Linguagem de código: Python ( python )
Cada aplicativo PyQt precisa de um e apenas um QApplication
objeto.
Terceiro, crie uma nova instância de QWidget
com o título 'Hello World'
e chame o show()
método para exibir a janela:
window = QWidget(windowTitle='Hello World')
window.show()
Linguagem de código: Python ( python )
Por fim, chame o exec()
método da QMainApplication
instância para iniciar o loop de eventos :
app.exec()
Linguagem de código: Python ( python )
Introdução ao loop de eventos
Cada aplicação PyQt precisa de uma instância de QApplication
classe. O QApplication
objeto contém o loop de eventos do aplicativo.
O loop de eventos é responsável por gerenciar todos os eventos do aplicativo, incluindo as interações do usuário com a GUI.
Quando você interage com o aplicativo Qt, por exemplo, pressionando uma tecla ou botão, o PyQt gera um evento e o coloca em uma fila de eventos .
O loop de eventos verifica continuamente a fila de eventos. Se o loop de eventos encontrar um evento, ele encaminhará o evento para um manipulador de eventos específico .
O manipulador de eventos processa o evento e passa o controle de volta ao loop de eventos para processar os próximos eventos.
A imagem a seguir ilustra como funciona o loop de eventos:
Observe que cada aplicativo PyQt possui um e apenas um loop de eventos.
Suporta argumento de linha de comando e código de retorno
Um programa PyQt pode aceitar um ou mais argumentos de linha de comando. Para habilitar isso, você precisa passar do argv
módulo sys
para QApplication
assim:
app = QApplication(sys.argv)
Linguagem de código: Python ( python )
Os app.exec()
retornos 0
em caso de sucesso ou outro valor em caso de fracasso.
Se um programa PyQt for executado a partir de um Shell, ou seja, o prompt de comando no Windows ou o Terminal no macOS e Linux, ele deverá retornar um código indicando o sucesso ou falha do programa.
Para fazer isso, você chama a sys.exit()
função e passa o resultado app.exec()
para ela da seguinte maneira:
sys.exit(app.exec())
Linguagem de código: Python ( python )
Ao fazer isso, o Shell pode receber o código de retorno do aplicativo PyQt.
O seguinte mostra o Hello World
programa revisado:
import sys
from PyQt6.QtWidgets import QApplication, QWidget
# create the QApplication
app = QApplication(sys.argv)
# create the main window
window = QWidget(windowTitle='Hello World')
window.show()
# start the event loop
sys.exit(app.exec())
Linguagem de código: Python ( python )
Criando um modelo de programa Qt
O seguinte ilustra o PyQt Hello World de uma forma orientada a objetos:
Observe que se você não estiver familiarizado com programação orientada a objetos, poderá seguir o tutorial Python OOP .
import sys
from PyQt6.QtWidgets import QApplication, QWidget
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# set the window title
self.setWindowTitle('Hello World')
# show the window
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
# create the main window
window = MainWindow()
# start the event loop
sys.exit(app.exec())
Linguagem de código: Python ( python )
Como funciona.
Primeiro, defina a MainWindow
classe que herda de QWiget
:
class MainWindow(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# set the window title
self.setWindowTitle('Hello World')
# show the window
self.show()
Linguagem de código: Python ( python )
No __init__()
método, definimos o título da viúva e chamamos o show()
método para exibir a janela.
Em seguida, adicione o bloco if __name__ == ‘__main__’ para incluir o código se o programa for executado diretamente. Se o script for importado como um módulo, o código deste bloco não será executado.
if __name__ == '__main__':
Linguagem de código: Python ( python )
Em seguida, crie um QApplication
objeto:
app = QApplication(sys.argv)
Linguagem de código: Python ( python )
Depois disso, crie uma nova instância do MainWindow
:
window = MainWindow()
Linguagem de código: Python ( python )
Finalmente, inicie o loop de eventos:
sys.exit(app.exec())
Linguagem de código: Python ( python )
Resumo
- Cada aplicativo PyQt possui um e apenas um
QApplication
objeto. OQApplication
objeto contém um loop de eventos. - Um loop de eventos gerencia todos os eventos do aplicativo PyQt. Ele verifica a fila de eventos continuamente e encaminha os eventos para seus manipuladores.
- Chame o
app.exec()
para iniciar o loop de eventos. - Use
QMainWindow
para criar a janela principal do aplicativo PyQt e chamar oshow()
método para exibir a janela na tela.