Desenvolvimento de interfaces gráficas utilizando PyQt5

Objetivo:

Nesse blog vamos descrever como desenvolver rapidamente protótipos de interfaces gráficas utilizando o PyQt5.

Fundamentos

Há várias ferramentas computacionais poderosas que facilitam o processo de desenvolvimento de interfaces gráficas. Dentre as ferramentas mais populares e genéricas (multi-plataforma) podemos citar o GTK+ (C) e o Qt (C++). Uma comparação entre essas ferramentas pode ser encontrada no link http://www.wikivs.com/wiki/GTK_vs_Qt.

Sem entrar em detalhes, adotamos a última versão do Qt (o Qt5) por ser uma ferramenta mais moderna e que apresenta excelentes recursos (como o Qt Designer e o QML), qualidade gráfica e portabilidade.

O Qt (em inglês se pronuncia "cue -tee") é desenvolvido atualmente pela Digia, uma companhia finlandesa que mantem os direitos da marca Qt. O Qt pode ser utilizado sob lincensa comercial, GPL v3 ou LGPL v2. Para saber mais consulte a página http://qt-project.org

Embora o Qt seja desenvolvido em C++, vamos utilizar as extensões do Qt para Python. A utilização dessas ferramentas acelera o processo de prototipação de interfaces. Nesse blog vamos cobrir apenas alguns fundamentos para facilitar a sua iniciação com o Python e o Qt5, por meio de exemplos (muitos deles tirados de tutorias disponíveis online, mas em inglês). Para saber mais sobre o PyQt5 visite a página http://pyqt.sourceforge.net/Docs/PyQt5/index.html.

Antes de continuar ...

Você deve instalar os seguintes softwares:

Programação de interfaces gráficas

Uma interface gráfica (ou GUI de Graphical User Interface) permite que o usuário interaja com a máquina por meio de janelas, ícones, menus e alguma forma de apontamento (como o mouse em computadores desktop, ou touchpads em notebooks, ou diretamente tocando na tela como em tablets e smart phones). Essas interfaces gráficas são também conhecidas como interfaces WIMP (de Windows, Icons, Menus, and Pointing).

Uma interface gráfica é um bom exemplo de programa baseado em eventos. Diferentemente de uma interface de linha de comando, onde o usuário precisa digitar o comando desejado em um terminal, uma interface gráfica oferece várias opções que são visíveis (janelas, ícones e menus) e que podem ser apontadas e selecionadas pelo usuário. Toda vez que o usuário realiza uma ação, por exemplo, um clique do mouse, o sistema operacional gera um evento que deve ser tratado, em sua última instância, pelo objeto que recebeu o clique.

Para se desenvolver uma interface gráfica é necessário definir o conjunto de elementos gráficos que comporão a interface, como esses elementos devem ser colocados na interface (posição de cada elemento na janela), que eventos cada elemento deve responder e as rotinas para tratar cada evento. O design da parte gráfica (definição do posicionamento dos elementos e outras propriedades gráficas) pode ser feito independentemente das rotinas para tratamento dos eventos e, inclusive, o resultado do design gráfico pode ser utilizado como protótipo não funcional para testes preliminares com usuários.

Os elementos gráficos da interface (como os vários tipos de botões e menus) são chamados de widgets (Window Gadgets). A organização (posicionamento) desses elementos na janela é realizada por meio de elementos de layout.

Em aulas anteriores vimos como criar interfaces típicas de aplicações em Desktops de duas formas:

  1. diretament no PyQt5 e
  2. usando o Qt Designer, e depois acessando os elementos da interfaces no PyQt.
O QML é uma linguagem declarativa que permite a criação de interfaces fluidas, típicas de plataformas móveis, mas também apropriadas para Desktop. Clique em Usando o Quick Qt para saber mais sobre o QML e o Qt Quick.