Este artigo é a parte 1 de 14 na série PyQt

Este texto será o primeiro de uma série de tutoriais em PyQt4, apresentados de forma simples. O objetivo é registrar estes conhecimentos em um lugar comum e com isto, capacitar o leitor a utilizá-los na construção de diálogos, GUIs ou mesmo aplicativos em PyQt4.

Não é interesse deste texto, e dos seguintes, ensinar programação em Python. Bem ao contrário, vou supor que o leitor conheça bem o Python 2.4, 2.5 ou outra versão que se tornar ativa ao longo da escrita destes textos, com conhecimentos em orientação a objetos, funções, tipos avançados, …, ou seja, conheça o Python.

Para aqueles que pretendam conhecer o Python, aconselho a leitura dos materiais a seguir:

  • Aprenda a programar, por Luciano Ramalho – texto para iniciantes em programação (livre);
  • Python na Prática, por Christian Robottom Reis da Async Open Source (livre);
  • Python Docs, diversos documentos, alguns do próprio criador da linguagem, Guido van Rossum. Podem ser baixados do site do Python

Primeiro programa em PyQt4

O primeiro programa será um simples “Hello World”, para não fugir a regra. O código é apresentado no quadro a seguir:

#!/usr/bin/env python     
# -*- coding: iso-8859-1 -*-
#                           
# Simples Hello World em PyQt4
#                                  
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

# cria o objeto aplicativo
app = QApplication(sys.argv)

# cria um label
label = QLabel("Hello World")

# coloca o label no dialog
label.setWindowFlags(Qt.SplashScreen)

# apresenta o label
label.show()

# agenda a execução de um app.quit() em 10 segundos
QTimer.singleShot(10000, app.quit)

# inicia o aplicativo
app.exec_()

As linhas 7 e 8 carregam os módulos necessários para criar qualquer interface gráfica e qualquer aplicativo gráfico, com os botões, comboBox, listas, diálogos pré-definidos, entre muitos outros elementos gráficos, além de acesso a bancos de dados, network e muito mais.

A biblioteca Qt é muito extensa para ser apresentada em um texto, nem tenho esta pretensão. Para referência, é aconselhável ter uma cópia da documentação em www.riverbankcomputing.co.uk/static/Docs/PyQt4

Na linha 11 é criado o objeto app, uma instância da classe QApplication. O sys.argv é usado para passar argumentos de linha de comando para o aplicativo. Não é necessário passar estes argumentos, mas a classe QApplication necessita de um argumento de entrada, que pode ser uma lista vazia “[]”, caso não deseja que o seu aplicativo receba argumentos.

A linha 14 cria o objeto label com a mensagem “Hello World”. Observe que o texto passado como argumento a classe QLabel pode conter código html para a sua formatação. É claro que é possível acessar as propriedades do objeto label, para alterar tamanho, cor, fonte, alinhamento, entre outras propriedades, mas isto ficará para outro momento.

A linha 17 seta a flag Qt.Splashscreen, dizendo que o label será um splash na tela, ou seja, não vai necessitar de uma janela para apresentá-la. Em Qt, qualquer widget pode ser um splash na tela.

Para conhecer todas as flags suportadas pela propriedade setWindowFlags, veja a documentação em WindowFlags. O documento está escrito para C++, mas basta trocar o “::” por um ponto que está lendo um documento para o PyQt.

A linha 20 apresenta o conteúdo de label. A linha 23 coloca na fila de execução, em 10.000ms (10s), um app.quit, para terminar o aplicativo. Isto é necessário apenas para terminar o aplicativo após a execução do aplicativo, na linha 26.

A figura a seguir mostra o resultado da execução do código acima. Sobre a minha tela ele imprime a mensagem “Hello World”.

pyqt-02

Conclusão

Isto é apenas uma demostração de um código que serve bem como exemplo da leveza do código PyQt. Partes deste código será aproveitado ao longo dos demais tutoriais. Agora é só aguardar…

Dica

Para dominar mais rapidamente o PyQt, é imprescindível ter acesso à documentação do Qt4 na fonte, em http://doc.qtsoftware.com. Geralmente mantenho uma cópia do conteúdo da última versão destes documentos (atualmente 4.5) para consulta.

Isto pode ser feito com o comando wget, veja a linha abaixo:

wget -m -np http://doc.qtsoftware.com/4.5/

Isto irá criar um diretório doc.qtsoftware.com/4.5/, no diretório em que o comando for executado, com toda a documentação do Qt4.5. Isto pode ser muito útil, principalmente quando não se tem acesso contínuo à internet.