Universidade Federal do Pará Centro de Tecnologia da Informação e Comunicação Grupo de Trabalho SET. Tutorial PyQT4



Documentos relacionados
Tutorial de Computação Programação Gráfica em Python para MEC1100 v

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Orientação a Objetos Programação em C++

Inserindo Dados no Banco de Dados Paradox.

Dicas para usar melhor o Word 2007

1 UNIT Universidade do Trabalhador Dr. Abel dos Santos Nunes

Serviço Seguro de Mensagens Instantâneas

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Lição 1 - Criação de campos calculados em consultas

CURSO DE INFORMÁTICA BÁSICA AULA 2 O AMBIENTE WINDOWS

Como Gerar documento em PDF com várias Imagens

CRIANDO TEMPLATES E LEGENDAS

GUIA INTEGRA SERVICES E STATUS MONITOR

Banner Flutuante. Dreamweaver

Display de Cristal Líquido

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

Manual de Utilização COPAMAIL Criando e configurando a assinatura de . Zimbra Versão 8.0.2

Sumário: Fluxo Operacional... 3 Contatos Agenda Online Reservas de Salas Tarefas... 42

Tabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel

O Excel é um programa de computador desenvolvido para gerenciar dados na forma de planilhas.

Manual Sistema de Autorização Online GW

TUTORIAL COMO CRIAR E EDITAR UM VÍDEO NO WINDOWS MOVIE MAKER*

A Estação da Evolução

Microsoft Office PowerPoint 2007

Configuração de assinatura de

Como incluir artigos:

Conhecendo o Proteus

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Janelas e seus elementos

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

CONFIGURAÇÃO MINIMA EXIGIDA:

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Como funciona? SUMÁRIO

Eclipse com c++11 e boost Etapa 1- Download da IDE Eclipse c++ e configuração do MinGW

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

Criando um script simples

Tutorial WEB CONTENT MANAGEMENT [WCM] Obtenha benefícios a partir das aplicações customizadas da ADMT.

Gerenciamento de Projetos

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

O processo termina com o surgimento da última flecha quando aparece uma bolinha azul. Outras bolinhas aparecem aleatoriamente POWER POINT NEW WAY

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

Tutorial USERADM Como inserir conteúdo no Portal Transparência

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Como já foi dito anteriormente o Excel possui recursos que permitem alterar a aparência de nossas planilhas.

MANUAL DE INSTALAÇÃO LUZ DO SABER

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

SUMÁRIO TUTORIAL DO HQ. 2 DICAS PEDAGÓGICAS:. 2 DOWNLOAD DA INSTALAÇÃO. 2 PASSO 1 FORMULÁRIO PARA DOWNLOAD. 2 PASSO 2 ESCOLHENDO A VERSÃO.

ASSOCIAÇÃO CRISTÃ DE MOÇOS DO RIO GRANDE DO SUL DEPARTAMENTO DE TECNOLOGIA DA INFORMAÇÃO

App - Paint Pot (Lata de tinta)

Guia de Demonstração MeusPets

ROTEIRO DE INSTALAÇÃO

INFORMÁTICA APLICADA III APOSTILA VISUAL

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

APOSTILA DE INFORMÁTICA MICROSOFT WORD 2012

ANDROID APPLICATION PROJECT

Prática 6 ActionScript

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP (xampp-win installer.exe), veja aqui.

Escaneando seu computador com o Avira AntiVir 10

Apresentando o Microsoft Excel

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

Criar fotos em 3D no Creator

Delphi 7 Aula 01 Área do Triângulo

PHP Material de aula prof. Toninho (8º Ano)

CAPACITAÇÃO EM LIBREOFFICE IMPRESS

Trecho retirando do Manual do esocial Versão 1.1

MANUAL DE FTP. Instalando, Configurando e Utilizando FTP

cartórios as funcionalidades disponíveis em todas as três Centrais de Informação (RCTO, CEP e CESDI) e servir como apoio nas ações diárias.

Manual de Utilização

Manual Administrador - Mídia System


CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

PASSO A PASSO MOVIE MAKER

APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

Permissão de Usuários

Microsoft Office Excel 2007

Universidade Estadual de Campinas Faculdade de Educação Laboratório de Novas Tecnologias Aplicadas à Educação

Manual Equipamento ST10 Flasher Rev. 1

FCT Faculdade de Ciências e Tecnologia Serviço Técnico de Informática STI SGCD Sistema Gerenciador de Conteúdos Dinâmicos

Unidade 3: Trabalhando com variáveis no App Inventor

Unidade 1: O Painel de Controle do Excel *

INFORMÁTICA WORD. TELA DO WORD Nome do Arquivo que esta sendo editado: Botão Office Diversos Textos Barra de Títulos Nome do programa: Microsoft Word

Pesquisa e organização de informação

Logo abaixo temos a Barra de Menus que é onde podemos acessar todos os recursos do PHP Editor.

W o r d p r e s s 1- TELA DE LOGIN

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Organização de programas em Python. Vanessa Braganholo

Importação de Dados no Sphinx

Como gerar arquivos.plt

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Exercícios Práticos Assunto: Criação de slots e instâncias da ontologia com o Protegé.

Passo a passo da instalação do certificado da AC Raiz da Sefaz. Certificado AC Raiz Sefaz AL

Manual Operacional SIGA

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

COMO UTILIZAR O EDITOR DE TEXTO

INTRODUÇÃO AO WINDOWS

Portal Sindical. Manual Operacional Empresas/Escritórios

VERSÃO PARA INTERNET. Tutorial SIGA BRASIL CNT

NÚCLEO DE TECNOLOGIA E EDUCAÇÃO CURSO: WINDOWS MOVIE MAKER TUTORIAL

Transcrição:

Universidade Federal do Pará Centro de Tecnologia da Informação e Comunicação Grupo de Trabalho SET Tutorial PyQT4 16 de Agosto de 2011 1

Sumário 1 Introdução 3 2 Criando a interface da aplicação 3 2.1 A janela principal........................... 3 2.2 Adicionando os elementos necessários................ 4 2.3 Criando os slots............................ 5 3 O código fonte 7 4 Considerações finais 12 2

1 Introdução Este tutorial tem por objetivo explicar alguns conceitos básicos, práticos e teóricos, de programação em Python com QT. Para criar uma aplicação em PyQT (aqui iremos utilizar a versão 4 do QT), é necessário instalar alguns pacotes. Para isso, abra o seu terminal e execute o seguinte comando: sudo apt-get install pyqt4-dev-tools qt4-designer Com todos os pacotes instalados, podemos começar a pensar na nossa aplicação. Neste tutorial, será implementada uma calculadora bem simples, a qual terá quatro funcionalidades básicas: somar, subtrair, multiplicar e dividir. 2 Criando a interface da aplicação 2.1 A janela principal Pressione Alt + F2 e digite designer-qt4. Com o qt4-designer aberto, selecione a opção Widget e clique em Create. Será criada uma widget, a janela onde ficará a interface da calculadora. Antes de tudo, vamos mudar o nome que será atribuído ao objeto que representará a 3

interface no código fonte. Ao lado direito do qt4-designer existe uma janela com as propriedades (e seus respectivos valores) da interface. Clique em qualquer parte vazia da interface e nas propriedades objectname e windowtitle digite Calculadora. Salve o arquivo com o nome Calculadora.ui no diretório de sua preferência. Sua janela deverá estar deste jeito: 2.2 Adicionando os elementos necessários Vamos adicionar quatro botões à nossa janela. No canto superior esquerdo do qt4-designer, no Widget Box, digite push button no filtrador. Clique e arraste quatro push buttons para a interface. Vá posicionando os elementos da sua calculadora da forma que você achar mais coerente. Clique duas vezes em cima do primeiro push button e atribua para o botão o símbolo de adição (+). Agora clique uma vez no mesmo e na propriedade objectname digite pb soma. Este nome signifca que o objeto é um push button (pb) e será responsável pela funcionalidade da soma entre dois valores. Realize o mesmo procedimento para os outros três botões, mas, claro, atribuindo os valores necessários para cada um deles. Não esqueça que deverá haver um botão que realizará soma (+); outro para subtração (-); um para multiplicação (*); e mais um para divisão (/). Após a criação dos botões, vamos adicionar três line edit. No filtrador digite este nome e arraste três caixinhas deste tipo para a interface. Clique uma vez em cada uma delas para mudar o valor de suas propriedades objectname. Uma deverá ter o nome le valor1, que representará o primeiro valor que será passado para a realização da operação desejada (repare que o le no nome do objeto se dá pelo fato de ser um line edit); outra deverá ter o nome le valor2, valor 2 para a operação; e a última terá o nome le resultado, o resultado da operação entre o valor 1 e o valor 2. Para realizar a interação com o usuário, vamos adicionar três labels à interface. Digite label no filtrador e arraste um para o lado esquerdo de cada line edit. Clique duas vezes em cima de cada label e mude o nome que os representará para Valor 1:, Valor 2: e Resultado:, respectivamente. Labels não necessariamente precisam de um nome para a propriedade objectname, mas para questões de organização, mude-o para lb valor1, lb valor2 e lb resultado, respectivamente. 4

2.3 Criando os slots A interface da nossa calculadora está quase pronta. Agora, para questões de interação com o código fonte do programa, precisaremos criar slots para cada botão que representa uma determinada operação realizada pela calculadora. Criar um slot significa, basicamente, criar um método para ser implementado no código fonte. Pressione F4 no seu teclado. Você pode perceber que, agora, ao passar o mouse pelos elementos da interface, uma linha vermelha os contorna. Sendo assim, clique em cima do botão da soma, segure o clique e arraste-o até uma parte vazia da interface. Uma nova janela será aberta. 5

No lado direito desta, clique em Edit.... existentes. Aparecerão os slots e signals Na parte dos slots, clique no botão que possui o sinal +. Digite somar() e dê enter. Clique em OK. Voltará para a janela anterior. 6

Basta, então, você, no lado esquerdo, clicar em clicked() e no lado direito em somar(), e dar OK. Realize o mesmo procedimento para os outros três botões, mas, claro, criando os slots que representarão cada um deles e relacionando-os adequadamente. OBS: Em questões de necessidade/curiosidade, para voltar à edição da interface em si, basta pressionar F3. Pronto! A interface no qt4-designer está criada e possui o nome Calculadora.ui. 3 O código fonte Vá ao terminal. Nele, esteja no diretório onde está contido o arquivo que acabamos de criar e execute o comando: pyuic4 Calculadora.ui -o ui Calculadora.py. Este comando passa todo o código da interface que está na linguagem xml, no 7

arquivo Calculadora.ui, para a linguagem de programação python, no arquivo ui Calculadora.py. Conteúdo do arquivo ui Calculadora.py: # -*- coding: utf-8 -*- # Form implementation generated from reading ui file Calculadora.ui # # Created: Mon Aug 1 12:08:44 2011 # by: PyQt4 UI code generator 4.8.3 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui try: fromutf8 = QtCore.QString.fromUtf8 except AttributeError: fromutf8 = lambda s: s class Ui Calculadora(object): def setupui(self, Calculadora): Calculadora.setObjectName( fromutf8( Calculadora )) Calculadora.resize(400, 300) self.pb soma = QtGui.QPushButton(Calculadora) self.pb soma.setgeometry(qtcore.qrect(250, 60, 94, 24)) self.pb soma.setobjectname( fromutf8( pb soma )) self.pb divisao = QtGui.QPushButton(Calculadora) self.pb divisao.setgeometry(qtcore.qrect(250, 210, 94, 24)) self.pb divisao.setobjectname( fromutf8( pb divisao )) self.pb multiplicacao = QtGui.QPushButton(Calculadora) self.pb multiplicacao.setgeometry(qtcore.qrect(250,160,94,24)) self.pb multiplicacao.setobjectname( fromutf8( pb multiplicacao )) self.pb subtracao = QtGui.QPushButton(Calculadora) self.pb subtracao.setgeometry(qtcore.qrect(250, 110, 94, 24)) self.pb subtracao.setobjectname( fromutf8( pb subtracao )) self.le valor1 = QtGui.QLineEdit(Calculadora) self.le valor1.setgeometry(qtcore.qrect(70, 60, 113, 23)) self.le valor1.setobjectname( fromutf8( le valor1 )) self.le valor2 = QtGui.QLineEdit(Calculadora) self.le valor2.setgeometry(qtcore.qrect(70, 110, 113, 23)) self.le valor2.setobjectname( fromutf8( le valor2 )) self.le resultado = QtGui.QLineEdit(Calculadora) self.le resultado.setgeometry(qtcore.qrect(70, 180, 113, 23)) self.le resultado.setobjectname( fromutf8( le resultado )) self.lb valor1 = QtGui.QLabel(Calculadora) self.lb valor1.setgeometry(qtcore.qrect(10, 60, 61, 21)) self.lb valor1.setobjectname( fromutf8( lb valor1 )) self.lb valor2 = QtGui.QLabel(Calculadora) self.lb valor2.setgeometry(qtcore.qrect(10, 110, 56, 21)) 8

self.lb valor2.setobjectname( fromutf8( lb valor2 )) self.lb resultado = QtGui.QLabel(Calculadora) self.lb resultado.setgeometry(qtcore.qrect(10, 180, 71, 21)) self.lb resultado.setobjectname( fromutf8( lb resultado )) self.retranslateui(calculadora) QtCore.QObject.connect(self.pb soma, QtCore.SIGNAL( fromutf8( clicked() )), Calculadora.somar) QtCore.QObject.connect(self.pb subtracao, QtCore.SIGNAL( fromutf8( clicked() )), Calculadora.subtrair) QtCore.QObject.connect(self.pb multiplicacao, QtCore.SIGNAL( fromutf8( clicked() )) Calculadora.multiplicar) QtCore.QObject.connect(self.pb divisao, QtCore.SIGNAL( fromutf8( clicked() )), Calculadora.dividir) QtCore.QMetaObject.connectSlotsByName(Calculadora) def retranslateui(self, Calculadora): Calculadora.setWindowTitle(QtGui.QApplication.translate( Calculadora, Calculadora, None, QtGui.QApplication.UnicodeUTF8)) self.pb soma.settext(qtgui.qapplication.translate( Calculadora, +, None, QtGui.QApplication.UnicodeUTF8)) self.pb divisao.settext(qtgui.qapplication.translate( Calculadora, /, None, QtGui.QApplication.UnicodeUTF8)) self.pb multiplicacao.settext(qtgui.qapplication.translate( Calculadora, *, None, QtGui.QApplication.UnicodeUTF8)) self.pb subtracao.settext(qtgui.qapplication.translate( Calculadora, -, None, QtGui.QApplication.UnicodeUTF8)) self.lb valor1.settext(qtgui.qapplication.translate( Calculadora, Valor 1:, None, QtGui.QApplication.UnicodeUTF8)) self.lb valor2.settext(qtgui.qapplication.translate( Calculadora, Valor 2:, None, QtGui.QApplication.UnicodeUTF8)) self.lb resultado.settext(qtgui.qapplication.translate( Calculadora, Resultado:, None, QtGui.QApplication.UnicodeUTF8)) Agora veremos o conteúdo do arquivo que será o executável para a aplicação. Este arquivo, no nosso caso, será chamado de Calculadora.py e deverá ser criado de forma avulsa. 1 # -*- coding: utf-8 -*- 2 3 from PyQt4 import QtCore, QtGui 4 import sys 5 6 from ui Calculadora import * 7 8 class Calculadora(QtGui.QMainWindow,QtGui.QDialog): 9 def init (self, parent=none): 10 QtGui.QWidget. init (self, parent) 11 self.ui = Ui Calculadora() 12 self.ui.setupui(self) 9

13 14 def somar(self): 15 resultado = int(self.ui.le valor1.text()) + int(self.ui.le valor2.text()) 16 self.ui.le resultado.settext(str(resultado)) 17 self.ui.le valor1.clear() 18 self.ui.le valor2.clear() 19 20 def subtrair(self): 21 resultado = int(self.ui.le valor1.text()) - int(self.ui.le valor2.text()) 22 self.ui.le resultado.settext(str(resultado)) 23 self.ui.le valor1.clear() 24 self.ui.le valor2.clear() 25 26 def multiplicar(self): 27 resultado = int(self.ui.le valor1.text()) * int(self.ui.le valor2.text()) 28 self.ui.le resultado.settext(str(resultado)) 29 self.ui.le valor1.clear() 30 self.ui.le valor2.clear() 31 32 def dividir(self): 33 resultado = int(self.ui.le valor1.text()) / int(self.ui.le valor2.text()) 34 self.ui.le resultado.settext(str(resultado)) 35 self.ui.le valor1.clear() 36 self.ui.le valor2.clear() 37 38if name == main : 39 app = QtGui.QApplication(sys.argv) 40 window = Calculadora() 41 window.show() 42 sys.exit(app.exec ()) Seguem algumas explicações mais relevantes sobre o código principal: 1. Na linha 3, são adicionados dois módulos do PyQt4 (QtCore e QtGui), necessários para trabalhar com qualquer aplicação implementada em python com QT. 2. Na linha 4, é importado outro módulo (sys) essencial para qualquer aplicação também. 3. Na linha 6, ocorre outra importação. Esta diz respeito ao arquivo.py que possui o código da interface. O asterisco (*) explicita para o interpretador que serão importadas todas as classes e métodos do arquivo ui Calculadora.py. Repare que não é necessário colocar o.py no final do nome do arquivo, neste caso. 4. Após os imports, deve sempre ser criado uma classe com um nome de sua preferência. Mas não esqueça que é importante que a classe tenha um nome adequado ao assunto que ela trata no código principal. Por isso, damos o nome Calculadora. Esta classe será responsável mais tarde 10

por exibir a interface do programa com todos os elementos para que estes possam ser utilizados pelo usuário. 5. A linha 9 possui a declaração do construtor da classe Calculadora. Neste construtor, um objeto chamado ui (linha 11) é criado instanciando a classe da interface, Ui Calculadora que está presente no arquivo ui Calculadora.py. Dessa forma o objeto ui agora possui o método setupui, que é executado (linha 12). Tal execução cria a janela principal da interface e todos os elementos da mesma. Ou seja, a classe Calculadora agora possui um atributo o qual é um objeto da classe Ui Calculadora, que representa a interface do programa. Isto quer dizer que a interface agora também pertence à classe Calculadora. 6. Na linha 14, começam a ser declarados os métodos para as funcionalidades dos botões criados. O método somar() representa o slot com o mesmo nome criado no qt4-designer e que está relacionado ao botão de nome pb soma. Este método soma os valores que estão nas duas linhas de texto (line edit), de nomes le valor1 e le valor2, e passa o resultado para a variável resultado (linha 15). Perceba que o le valor1 e o le valor2 são atributos do objeto ui (assim como o le resultado) e que a função para se obter o que está escrito em um line edit é text(). 7. Na linha 16 é mudado o conteúdo do line edit le resultado através da função settext(), que recebe o resultado da soma anterior como parâmetro. O conteúdo da variável resultado estará agora neste. As funções int() (converte um valor do tipo string ou float, por exemplo, para um valor do tipo int) e str() (converte um valor do tipo int ou float, por exemplo, para um valor do tipo string) são utilizadas porque tudo o que estiver em um line edit será unificado em uma string. E para que se possa realizar operações com o valor passado, ele deverá ser um valor numérico (em nossa aplicação, as operações são realizadas apenas com inteiros). 8. Nas linhas 17 e 18, a função clear limpa o conteúdo de le valor1 e le valor2. Perceba, então, que todo esse processo ocorrerá quando houver os dois valores passados em le valor1 e le valor2, e o botão pb soma for clicado. 9. O mesmo processo ocorre quando um dos outros três botões for clicado. A única diferença entre eles é o operador, que muda de acordo com a operação e o método que a representa. 10. Na linha 38, é declarado o método main, o qual é o método procurado e executado pelo interpretador quando o arquivo é executado. A princípio você não precisa se preocupar com este método, pois ele terá quase sempre a mesma estrutura para aplicações mais simples. As linhas 40 e 41 são as mais relevantes, onde um objeto da classe Calculadora, que representa agora toda a aplicação, é criado; e o seu método show(), o qual tem a função de mostrar a janela da aplicação na tela do computador, é chamado. Está tudo implementado! Para executar a sua calculadora, basta ir para o terminal, estar no diretório onde está o arquivo Calculadora.py e executar o seguinte comando: python Calculadora.py 11

OBS1: É importante que todos os arquivos criados para o aplicativo estejam no mesmo diretório. OBS2: Note que existe um parâmetro passado em todos os métodos criados na classe Calculadora. Isto ocorre porque, no python, um dos parâmetros passados para qualquer método executado é o próprio objeto o qual possui este método. Não entendeu? Então veja esta rápida e fácil explicação contida neste blog. 4 Considerações finais O conteúdo deste tutorial visou introduzir a programação em python com QT. Caso você, leitor, desejar se aprofundar um pouco mais ou conhecer novos recursos do PyQT4, existe um tutorial bastante didático e muito bem explicado neste link. 12