Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
QtDesigner
PyQt4 2.6.6 - 4.6.2
a IFRS/Câmpus Osório
Resumo
Este do
umento é parte
omplementar do relatório nal do projeto de pesquisa
Aprendendo uma libguage de programação: Python. Apli
ações de funções matemá-
ti
as nas soluções de problemas em me
âni
a . Des
revemos as tarefas exe
utadas
no período entre 11 de outubro de 2011 e 13 de janeiro de 2012 pelos bolsistas sob
minha orientação. São des
ritos o uso de um software livre para desenvolvimento de
interfa
e grá
a ao usuário para os programas
onstruídos até o presente momento.
Como exemplo, mostramos
omo
riar um janela de dialogo e o resultado de jogo
apli
ando equações de movimento oblíquo,
onteúdo estudado pelos alunos do médio
integrado.
Podemos desenvolver todo o
ódigo em Python, isto é, tanto o algoritmo
omo a inter-
fa
e grá
a para o usuário, já que python é uma linguagem
ompleta. Python vem
om
um módulo (TKinter ) nativo para o desenvolvimento de apli
ativos grá
os. Entretanto
o módulo TKinter é um tanto sem apelo visual, além do que não possui uma integra-
ção
om ferramenta visual para
onstrução de apli
ativos grá
os. Assim, pre
isamos de
outra ferramenta para gerar essas GUI's. Portanto, utilizamos QtDesigner, que é uma
ferramenta que possui um editor visual para
riar as janelas (interfa
es para dialogs ,
widgets personalizadas e janelas prin
ipais windows). O resultado nal de qualquer
projeto desenvolvido
om QtDesigner, são janelas (dialogs ) bem elaboradas e realizadas
num tempo muito
urto.
Python é uma linguagem muito versátil, por isso, muitos programadores denem-a
omo
ola Jython) . Da mesma forma que Jython, PyQt
de outras linguagens
omo em (
também é uma mistura de Python
om QtDesigner, onde
onstruímos as janelas
om
QtDesigner e
onvertemos o
ódigo de Qt para uma forma que Python possa interpretá-
la. O que é uma maravilha para quem deseja desenvolver programas
om GUI's. Portanto,
ao
ontrário de TKinter,
om PyQt podemos
onstruir GUI's, desenvolvendo tudo em
ódigo puro ou
ombinando o
ódigo python e o editor visual do QtDesigner para
riar
os dialogs.
2
2 Desenvolvendo Interfa
es para o Usuário
Antes de ini
iar a
onstrução do apli
ativo, vamos mostrar a ferramenta visual, QtDesig-
ner,a qual será empregada no desenvolvimento da GUI. A gura 1, mostra uma imagem
do editor visual do QtDesigner. Ao ini
iar o editor qtdesigner podemos denir qual
3
Figura 2. Caixa de dialogo
ontendo os botões de OK e Can
el.
Para
riar a janela do jogo de lançamento vamos pre
isar de diversos objetos,
omo botões
de ini
iar jogo, m de jogo, atirar, et
. Para ir pegando o jeito, ini
iamos pela
onstrução
de uma janela
om o botão de sair que ao
li
ar fe
he a GUI. O
ódigo a seguir é o resultado
do
lique e arraste de uma
aixa de dialogo (Dialog ) e um botão de sair (PushButton )
feito no qtdesigner. Abaixo, mostramos os
ódigos Qt e Python, em sequên
ia, para
omparação das linguagens. A
hamos que isso é instrutivo para um
omparativo entre as
linguagens.
__________________________________________________________________________
Qt - sairform.ui
4
<re
t>
<x>0</x>
<y>0</y>
<width>104</width>
<height>53</height>
</re
t>
</property>
<property name="windowTitle">
<string>sairForm</string>
</property>
<widget
lass="QPushButton" name="quitButton">
<property name="geometry">
<re
t>
<x>6</x>
<y>2</y>
<width>91</width>
<height>51</height>
</re
t>
</property>
<property name="text">
<string>Sair</string>
</property>
</widget>
</widget>
<resour
es/>
<
onne
tions/>
</ui>
__________________________________________________________________________
__________________________________________________________________________
Py - ui_sairform.py
5
lass Ui_sairForm(obje
t):
def setupUi(self, sairForm):
sairForm.setObje
tName("sairForm")
sairForm.resize(104, 53)
self.quitButton = QtGui.QPushButton(sairForm)
self.quitButton.setGeometry(QtCore.QRe
t(6, 2, 91, 51))
self.quitButton.setObje
tName("quitButton")
self.retranslateUi(sairForm)
QtCore.QObje
t.
onne
t(self.quitButton, QtCore.SIGNAL("
li
ked()"), \
sairForm.
lose)
QtCore.QMetaObje
t.
onne
tSlotsByName(sairForm)
if __name__ == "__main__":
import sys
app = QtGui.QAppli
ation(sys.argv)
sairForm = QtGui.QWidget()
ui = Ui_sairForm()
ui.setupUi(sairForm)
sairForm.show()
sys.exit(app.exe
_())
__________________________________________________________________________
A primeira (Qt) utiliza uma sintaxe do tipo XML, enquanto a segunda é a sintaxe do
ódigo python. Utilizamos um s
ript feito em python para
onverter a sintaxe XML para
ódigo Python, portanto não é ne
essário que o programador saiba programação XML.
Maiores informações sobre esse s
ript pode ser visto em um dos livros adquiridos durante
o projeto de pesquisa, ver referên
ia [3℄.
6
Figura 3. Janela de dialogo
hamada de uma shell de
omando.
Neste exemplo, através de
riação de uma simples GUI, mostramos a simpli
idade no
desenvolvimento de interfa
es grá
os
om o PyQt. Não temos a intenção neste pequeno
artigo, expli
ar
omo programar na fusão dessas duas linguagens (QtDesigner e Python),
mas apenas
hamar a atenção para a produtividade no desenvolvimento de apli
ativos
om o uso de GUI's. No próximo exemplo vamos mostrar o resultado da GUI apli
ada a
equação do movimento oblíquo.
Na gura 4, mostramos um mosai
o do jogo tiro ao alvo, uma simples brin
adeira apli-
ando as equações do movimento oblíquo. Este jogo é uma apli
ação lúdi
a das equações
de movimento oblíquo de problemas da
inemáti
a, que foram apli
ados aos alunos do mé-
dio integrado, durante o segundo trimestre
omo uma atividade paralela para re
uperação
de
ompetên
ias não al
ançadas.
7
Figura 4. Interfa
e Grá
a para o Jogo de Tiro Alvo
programação, pelo simples fato de que desenvolver essa habilidade om os alunos foi muito
8
y = y0 + vely * tempo - 0.5 * gravidade * tempo * tempo
Para resgatar a parte físi
a, vamos es
rever as equações de movimento oblíquo [4,5℄ para
que possa ser feito um
omparativo
om o que foi programado. A seguir as equações de
movimento oblíquo (horizontal x e verti
al y):
x = xo + vox t
Equação da
oordenada verti
al y (2)
1
y = yo + voy t − gt
2
Não é muito difí
il identi
ar os parâmetros do tre
ho de
ódigo a
ima
om as variáveis
das equações de movimento em (1 e 2). Com isto, resgatamos as equações de movimento
oblíquo programadas no
ódigo
inemáti
a e agora no jogo de tiro ao alvo, as mesmas
que foram objetos de estudo durante o
urso de si
a (aulas e nos estudos orientados).
Assim, mostramos que podemos
onstruir objetos de aprendizagem na forma de jogos
lúdi
os que podem auxiliar no pro
esso de aprendizagem signi
ativa.
9
Referên
ias
[1℄ Brahms H. G., Mesquita, L. V. e Oliveira H. L. - Python Físi
a Matemáti
a:
Apli
ações em Cinemáti
a. (I Parte), I Mostra Cientí
a do Campus Restinga/IFRS,
I,10/2011
[2℄ Brahms H. G., Mesquita, L. V. e Oliveira H. L. - Python Físi
a Matemáti
a:
Apli
ações em Cinemáti
a. (II Parte), VII Mostra Té
ni
a do Campus Restinga/IFRS,
VII,11/2011
[3℄ Summereld, M. - Rapid GUI Programming With Python and Qt, Prenti
e Hall,
Pearson Edu
ation, 2008 - Mi
higan, EUA.
[4℄ Sampaio, J. L. e Calçada, C. S. - Físi
a, Atual Editora, 2005 - 2a Ed., Vol. ùni
o, São Paulo.
[5℄ Penteado P. C. M. e Torres, C. M. A. - Físi
a Ciên
ia e Te
nologia, Editora Moderna,
2005 - 1a Ed.,Vol.1, São Paulo.
10