PyQt Olá Mundo

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 pipcomando:

pip install PyQt6Linguagem de código:  Python  ( python )

Se você usa macOS ou Linux, você precisa usar o pip3comando:

pip3 install PyQt6Linguagem de código:  Python  ( python )

Criando o primeiro programa PyQt

O programa a seguir exibe uma janela com o título Hello Worldna 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 pythoncomando:

python main.pyLinguagem de código:  Python  ( python )

Se você usa macOS ou Linux, pode usar o python3comando:

python3 main.pyLinguagem de código:  Python  ( python )

O seguinte mostra a janela:

Como funciona.

Primeiro, importe as classes QApplicatione QMainWidgetde PyQt6.Widgets:

from PyQt6.QtWidgets import QApplication, QWidgetLinguagem de código:  Python  ( python )

Segundo, crie um QApplicationobjeto:

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 QWidgetcom 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 QMainApplicationinstâ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 QApplicationclasse. O QApplicationobjeto 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:

Loop de eventos PyQt

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 argvmódulo syspara QApplicationassim:

app = QApplication(sys.argv)Linguagem de código:  Python  ( python )

Os app.exec()retornos 0em 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 Worldprograma 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 MainWindowclasse 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 QApplicationobjeto:

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 QApplicationobjeto. O QApplicationobjeto 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 QMainWindowpara criar a janela principal do aplicativo PyQt e chamar o show()método para exibir a janela na tela.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *