Baixar PDF

Transcrição

Baixar PDF
Python
2
Pokedex
AllCodeClubsmustberegistered.Byregisteringyourclubwecanmeasureour
impact,andwecancontinuetoprovidefreeresourcesthathelpchildrenlearnto
code.Youcanregisteryourclubatcodeclubworld.org.
Introdução:
Nesteprojetovocêaprenderácomocriarumainterfacegráficade
usuário(GUI),atravésdacriaçãodeumPokedex(queéum
programaparaprocurarinformaçõesemumPokemon).
ÉassimquesuaGUIPokedexvaiaparentar:
DadosdoPokemon
OsdadosdoPokemonaseremusadosnesteprojeto
podemseracessadosatravésdepokeAPI.Elesforam
criadosporPaulHallett.
1
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Listadeatividade
SigaestasINSTRUÇÕESumaauma
Testeseuprojeto
CliquenabandeiraverdeparaTESTAR
Salveseuprojeto
Certifique-sedeSALVARseutrabalho
2
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Step1:Widgets!
Listadeatividades
Ainterfacegráficadeusuário(GUIs)podersercriada
facilmenteusandoomódulo‘tkinter’.UmaGUIcontém
muitas“coisas”diferentes,chamadaswidgets.Por
exemplo:
fromtkinterimport*
#criaçãodeumanovajanelaGUI
janela=Tk()
janela.title("UmaJanela")
#umaetiqueta
lbl=Label(janela,text="Umaetiqueta")
lbl.pack()
#umacaixadeentradadetexto
texto=Entry(janela)
texto.pack()
#umbotão
btn=Button(janela,text="UmBotão")
btn.pack()
janela.mainloop()
Sevocêexecutaresteprograma,vocêveráumajanela
principal,quecontémumaetiquetadetexto,umacaixa
deentradadetextoeumbotão.
3
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Cadawidgetécriadoearmazenadoemumavariável,e
depoisempacotadoemumajanelaprincipal.Percebaque
quandoestivercriandoumwidget,vocêtemquedizer
emqualjanelavocêquerqueeleapareça,equaltexto
serámostrado,assim:
#umaetiqueta
lbl=Label(janela,text="Umaetiqueta")
Agoravocêpodeacrescentarmaiswidgetsparaseu
Pokedex:
fromtkinterimport*
#crieumanovajanelaGUI
janela=Tk()
janela.title("Pokedex")
#umaetiquetacontendoasinstruções
EtiquetaDeInstrucoes=Label(janela,text="Entreuma
númeroentre1e718:")
EtiquetaDeInstrucoes.pack()
#umacaixadeentradadetextoparadigitaronúmerodo
pokemon
txtPokemonNo=Entry(janela)
txtPokemonNo.pack()
#umbotãoquevaiobterainformaçãoparaopokemon
btnObterInfo=Button(janela,text="ObtenhaDados!")
btnObterInfo.pack()
4
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
#etiquetasparaonomedopokemon
etiquetaTextoNome=Label(janela,text="Nome:")
etiquetaTextoNome.pack()
etiquetaValorNome=Label(janela,text="???")
etiquetaValorNome.pack()
janela.mainloop()
Percebaquevárioscomentáriosúteisforamadicionados
paratelembrarparaquêcadawidgetéusado.Onome
dasvariáveisdoswidgetstambémforamalteradaspara
tornaroprogramamaisfácildeserentendido.
SalveSeuProjeto
5
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Desafio:Maiswidgets
VocêconsegueterminardecriarainterfaceGUIparaque
elamostreosdetalhesdoPokemoneparaqueelafique
comessaaparência:
SuainterfaceGUIprecisaráde:
Umacaixadeentradadetextoparadigitarqual
Pokemonvocêquerver;
UmbotãoparaobterasinformaçõesdoPokemon;
Váriasetiquetasparamostrarasinformaçõesdo
Pokemon:
Nome;
PontosAtingidos;
Ataque;
Defesa;
Velocidade.
Lembre-sequesevocêacrescentarcomentárioseutilizar
nomesdevariáveissignificativos,istoteajudarábastante
maistarde!
6
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
SalveSeuProjeto
Step2:Customizandoseuswidgets
AgoraquevocêjátemvárioswidgetsdiferentesnasuajanelaGUI,você
podemudaraaparênciadeles.
ListadeAtividades
Primeirovamosmudaralgumascoresparaqueos
widgetsfiquemmaisinteressantes.Mudeocódigoque
quemostraajanelaprincipal:
#crieumanovajanelaGUI
janela=Tk()
janela.config(bg="#e0e0ff")
janela.title("Pokedex")
Autilizaçãode .config() permitequevocêconfigurea
7
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
aparênciadascoisas.Eminglês, bg significa
“background”,ouseja,planodefundoe "#e0e0ff" éo
códigohexapararoxoclaro.Vocêtambémpode
configuraraaparênciadoswidgets,porexemplo,as
etiquetasparamostraronomedoPokemon:
#etiquetasparaonomedopokemon
etiquetaTextoNome=Label(janela,text="Nome:")
etiquetaTextoNome.config(bg="#e0e0ff",fg="#111111")
etiquetaTextoNome.pack()
etiquetaValorNome=Label(janela,text="???")
etiquetaValorNome.config(bg="#e0e0ff",fg="#111111")
etiquetaValorNome.pack()
fg
significaeminglêsforeground,eemportuguês,
significaprimeiroplano.Comelevocêajustaacorda
etiquetadetexto.
Emseguida,vocêpodemudarafontedecadaumdos
widgets.Primeirovocêpodecriarvariáveispara
armazenarinformaçõesdediferentesfontes.Adicione
estecódigoaoseuprogramalogoapósalinhaque
8
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
importaomódulo tkinter :
fontePequena=["Helvetica",14]
fonteMedia=["Helvetica",18]
fonteGrande=["Helvetica",30]
Vocêpodeagoraescolherafontedecadawidget,desta
maneira:
#etiquetasparaonomedopokemon
etiquetaTextoNome=Label(janela,text="Nome:")
etiquetaTextoNome.config(bg="#e0e0ff",fg="#111111",
font=fonteMedia)
etiquetaTextoNome.pack()
etiquetaValorNome=Label(janela,text="???")
etiquetaValorNome.config(bg="#e0e0ff",fg="#111111",
font=fonteGrande)
etiquetaValorNome.pack()
Namodificaçãoacima,aúnicacoisaquefoiacrescentada
ao .config() foi font=fonteMedia and font=fonteGrande .
9
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
SalveSeuProjeto
10
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Desafio:Fazendocomqueoswidgetsfiquem
maisbonitos
Vocêconsegueacrescentarfontesecoresparamelhorara
aparênciadaGUIdoseuPokedex.Vejaaquiumexemplo
decomoelepodeficar:
SeuPokedexpodeterumaaparênciadiferentedesta.Você
podeusardiferentesfontes,porexemplo Times , Courier ,
ouqualqueroutrafonteinstaladanoseucomputador.
Vocêtambémpodeescolhersuasprópriascores(incluindo
códigohexadecimaldecores).
SalveSeuProjeto
11
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Step3:Adicionandocomandos
AgoraquevocêtemumaGUIcomumaaparênciafantástica,vamos
fazerumbotãoquerealmentemostreosdadosdoPokemon!
ListadeAtividades
Primeiro,tenhacertezaquevocêtemumarquivo
chamado pokeapi.py salvonomesmodiretóriodoseu
programadeinterfaceGUIdoPokedex.Peçaajudaao
líderdoseuclubesevocênãoconseguirencontraro
arquivo.Estearquivocontémumafunçãochamada
getPokemonData()
,queobtémtodososdadosdeum
Pokemonespecífico.Parausarestafunção,vocêtem
apenasqueimportá-lodoarquivo pokeapi.py ,paraisto,
acrescenteestecódigonoiníciodoseuprograma:
frompokeapiimport*
Vamoscriarumanovafunçãochamada
mostreDadosDoPokemon()
getPokemonData()
,queiráusarafunção
quevocêacaboudeimportar.Esta
funçãoobteráosdadosdoPokemonescolhido,ecolocará
osdadosnasetiquetasdaGUI.Coloqueestecódigomais
próximodoiníciodoprograma:
#funçãoparamostrardadosparaumnúmerodepokemon
defmostreDadosDoPokemon():
#captureonúmerodigitadonacaixadeentrada
numeroDoPokemon=txtPokemonNo.get()
#useafunçãoencontradaem'pokeapi.py'paraobter
osdadosdopokemon
dicionarioDoPokemon=
getPokemonData(numeroDoPokemon)
12
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
#pegueosdadosdodicionárioeosutilizenas
etiquetas
etiquetaValorNome.configure(text=
dicionarioDoPokemon["name"])
etiquetaValorAtingidos.configure(text=
dicionarioDoPokemon["hp"])
Nãosepreocupeemcomoafunção getPokemonData()
funciona.Tudoquevocêprecisasaberéqueafunção
retorna(tedá)umdicionário.Eleéentãousadodentro
dafunção mostreDadosDoPokemon() paramostrarosdados
nasetiquetas name e hp .
Agoraquevocêtemasfunçõesquevocêprecisa,você
podeadicionarocomandoaobotão:
#umbotãoquevaiobterainformaçãoparaumpokemon
btnObterInfo=Button(janela,text="Obtenhadados!",
command=mostreDadosDoPokemon)
Agoratentedigitarumnúmeronacaixadeentradade
textoevejaoqueacontece:
13
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
VocêpodeatémesmofazerumjogodeTopPokemon,
paraistobastaremoverowidgettheentradadetextoe,
aoinvésdistopegarumPokemonaleatórioacadavez.
Apenasmudeafunção mostreDadosDoPokemon() para:
#funçãoparamostrardadosparaumnúmerodepokemon
defmostreDadosDoPokemon():
#obtenhaumnúmeroaleatóriodepokemon
numeroDoPokemon=randint(1,718)
#(orestantedafunçãocontinuaomesmo...)
Lembre-sedeimportaromódulo random noiníciodoseu
programa( fromrandomimport* ).Vocêpodecompetir
comumamigo,comparandoquemobteveomaior
númeroparaumahabilidadeparticular.
SalveSeuProjeto
Desafio:TerminaroseuPokedex
Adicionecódigoàsuafunção mostreDadosDoPokemon()
paramostraroataque,adefesaeavelocidadedo
Pokemon.Vocêprecisarásaberqueaschavesdo
dicionáriosão:
Ataque- dicionarioDoPokemon["attack"])
Defesa- dicionarioDoPokemon["defense"]) (perceba
queaortografiadoinglêsamericanoéutilizada!)
Velocidade- dicionarioDoPokemon["speed"])
Sevocêpreferir,vocêpodeatémesmomudar(ou
acrescentar)osdadosquesãomostradosparacada
Pokemon.Vocêtambémpodemostrar "happiness" ,
"height"
, "weight" emuitasoutrascaracterísticas.
Vocêpodeusarestesiteparavertodososdadosde
14
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Vocêpodeusarestesiteparavertodososdadosde
Pokemon.
SalveSeuProjeto
Step4:(Opcional)Acrescentandoumaimagem
TambémépossívelmostrarafotodoPokemonselecionadonoseu
Pokedex!
15
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
Nota
Vocêsópodecompletarestepassosevocêtiveromódulo
‘pillow’instaladonoseucomputador.Sevocênãotem
certeza,pergunteaoseulíderdeclube.
ListadeAtividades
ÉumpoucodifícilmostaraimagemdeumPokemonno
seuPokedex,masnãosepreocupe-existeumafunção
getPokemonImage()
noarquivo pokeapi.py parafazero
trabalhodifícilparavocê!Estafunçãoobtémaimagem
doPokemon,quepodesermostradaemumaetiqueta.
Primeiro,vamoscriarumaetiquetaparamostrara
imagemdentro.Adicioneestecódigoemalgumpontodo
seuprogramaprincipal,juntamentecomasoutras
etiquetas:
#etiquetaparaaimagemdoseupokemon
etiquetaImage=tkinter.Label(janela)
etiquetaImage.config(bg="#e0e0ff",fg="#111111")
etiquetaImage.pack()
Vocêpodemodificarafunção mostreDadosDoPokemon() para
mostrartambémaimagem:
#funçãoparamostrardadosparaumnúmerodepokemon
defmostreDadosDoPokemon():
16
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
#obtenhaumnúmeroaleatóriodepokemon
numeroDoPokemon=randint(1,178)
#useafunçãoacimaparaobterosdadoseaimagem
dopokemon
dicionarioDoPokemon=
getPokemonData(numeroDoPokemon)
imagemDoPokemon=getPokemonImage(numeroDoPokemon)
#pegueosdadosdodicionárioeosutilizenas
etiquetas
etiquetaValorNome.configure(text=
dicionarioDoPokemon["name"])
etiquetaValorAtingidos.configure(text=
dicionarioDoPokemon["hp"])
etiquetaValorAtaque.configure(text=
dicionarioDoPokemon["attack"])
etiquetaValorDefesa.configure(text=
dicionarioDoPokemon["defense"])
etiquetaValorVelocidade.configure(text=
dicionarioDoPokemon["speed"])
#adicioneaimagemecoloque-anaetiqueta
etiquetaImage.configure(image=imagemDoPokemon)
etiquetaImage.image=imagemDoPokemon
Quandovocêrodarseuprogramaeclicarem“Obtenha
umPokemon!”vocêverátambémumaimagem!
17
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.
SalveSeuProjeto
18
©RaspberryPiFoundation.UKRegisteredCharity1129409.TheseprojectsareforuseoutsidetheUKonly.Moreinformationatwww.codeclubworld.org.
ThiscourseworkisdevelopedonGitHub,atwww.github.com/CodeClub.

Documentos relacionados

Caça fantasmas

Caça fantasmas Fazer com que os fantasmas apareçam com uma frequência menor; Fazer os fantasmas menores. Teste seu jogo algumas vezes até que você esteja satisfeito com o nível de dificuldade.

Leia mais

Baixar PDF - Languages

Baixar PDF - Languages All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register your club at ...

Leia mais

Baixar PDF

Baixar PDF Acrescente este código ao CSS para o corpo (body) da usa página de internet, para mostrar um fundo (background) amarelo claro (light

Leia mais

Jogo da Memória

Jogo da Memória All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register your club at ...

Leia mais

Arte em ASCII

Arte em ASCII Execute o arquivo clicando em Run -> Run Module . Você verá outra janela aparecer, que é o Shell do Python. Esse é o lugar onde seu programa vai rodar. Se tudo funcionou como esperado, você verá ...

Leia mais

Secret Messages

Secret Messages All Code Clubs must be registered. By registering your club we can measure our impact, and we can continue to provide free resources that help children learn to code. You can register your club at ...

Leia mais