Escolar Documentos
Profissional Documentos
Cultura Documentos
Marco Dias
30 de setembro de 2020
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 1 / 61
Instalação
Instalação no Windows
Neste curso iremos trabalhar com a versão do Python 3.6 cujo link para
download é: https://www.python.org/downloads
No próprio site aparece ”Download the Latest Source Release”para baixar.
Durante a instalação, selecionem Install for all users quando aparecer a janela
com esta pergunta e o resto é tudo default, deixando como está.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 2 / 61
Instalação
Instalação no Windows
print("Hello")
Ao teclar Enter a magia deve acontecer (ou seja, ele vai responder com um
Hello).
Iremos verificar se a IDE está OK e podemos salvar nossos programas. Para
isto, ainda no IDLE, olhando no menu podemos selecionar File → New File.
Uma nova janela deve aparecer e alı́ que iremos trabalhar nossos programas.
Se vocês escreverem o mesmo print("Hello") que foi usado no teste
anterior e salvarem File→Save o arquivo como teste.py, será possı́vel,
ainda na IDE selecionar Run→Run Module e o programa será executado em
outra janela, a do interpretador.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 3 / 61
Instalação
Instalação no Windows
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 4 / 61
Instalação
Primeiros passos
Podemos usar o Python como uma calculadora. Tanto no uso interativo o
interpretador espera um comando por linha. Dois comandos por linha podem
ser inseridos usando ;, assim como usar expressões que continuam em outras
linhas, quebrando estas com o\.
>>> 1+1
2
>>># Podemos incluir comentários nos nossos programas
>>> 2*6
12
>>> 7/3.
2.333333333335
>>> 2**3
8
Observe o seguinte código:
>>> 7%(5//2)
Qual o resultado desta operação?
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 5 / 61
Instalação
Primeiros passos
O operador módulo (//) nos fornece em 5//2 o resultado 2, pois nos dá
quantas vezes o 2 ”cabe”no 5. O resto da divisão, é dado pelo operador %,
no caso 7%2 tem resto 1.
Exercı́cio
Converta as seguintes expressões matemáticas para serem calculadas usando o
interpretador
10 + 20 × 30
42
30
(94 + 2) × 6 − 1
Exercı́cio
Calcule a seguinte expressão com lapis e papel e observe a prioridade de operações
10 % 3*10**2+1-10*4/2
comparando com o resultado do interpretador.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 6 / 61
Instalação
Primeiros passos
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 7 / 61
Instalação
Primeiros passos
Exercı́cio
Complete o programa que declara uma variável numérica, adiciona 5 e depois
mostra o seu valor:
>>> x=___
>>> x__=5
>>>print___
No Python existem palavras reservadas as quais não podem ser usadas para
nomear variáveis. São elas and,as, assert, break, class, continue
, def, del, elif, else, except, exec,
finally, for, from, global, if, import, in, is, lambda,
not, or, pass, print, raise, return, try, while e yeld.
Também não é permitido que uma variável comece seu nome com um
número.
O Python ainda é case sensitive, ou seja ele diferencia variáveis com
minúsculas ou maiúsculas, logo a e A são variáveis diferentes para o
interpretador. Sempre que ele não encontra a variável temos o seguinte erro:
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 8 / 61
Instalação
Primeiros passos
>>> errado
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name ’errado’ is not defined
Você pode usar del para remover uma variável e poder usá-la novamente, ser
for necessário.
>>> foo=’minha variável’
>>> foo
>>> del foo
>>> foo
>>> foo=7
>>> foo
>>> foo+=3
>>> foo
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 9 / 61
Instalação
Primeiros passos
Exercı́cio
Faça um programa que exiba seu nome na tela.
Exercı́cio
Escreva um programa que exiba o resultado de 2a × 3b onde a = 3 e b = 5
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 10 / 61
Instalação
Estrutura de dados
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 11 / 61
Instalação
Estrutura de dados
Temos os seguintes métodos para listas
Método Função
a.append(element) adiciona o elemento no final da lista.
a.count(elemento) Retorna a quantidade do elemento na lista.
a.extend(listb) Concatena listas.
a.index(elemento) Retorna o ı́ndice da primeira ocorrência do element
a.insert(i,elemento) Insere o elemento antes do ı́ndice i.
a.pop(i) remove e retorna o objeto no ı́ndice ou o último ele
a.remove(elemento) Remove a primeira ocorrência do elemento.
a.reverse() Inverte a lista.
a.sort() Ordena a lista.
Tabela: Métodos de listas
Estrutura de dados
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 13 / 61
Instalação
Estrutura de dados
Outro tipo de sequência em Python são as strings, que podem estar
delimitadas por aspas simples ou duplas
>>> pig=’Peppa’
>>> len(pig)
5
>>> pig[1]
>>> poema=’Batatinha quando nasce \n espalha a rama pelo ch~
ao.\n
>>> print(poema)
Batatinha quando nasce
espalha a rama pelo ch~ ao.
Menininha quando dorme
p~oe a m~
ao no coraç~
ao.
>>> poema="""Batatinha quando nasce
espalha a rama pelo ch~ ao.
Menininha quando dorme
p~oe a m~
ao no coraç~
ao.""" #também funciona com ’’’
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 14 / 61
Instalação
Estrutura de dados
>>> x=’7’
>>> print(3*x) # x é uma string, portanto o resultado é 777
>>> print(x+’0’)
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 15 / 61
Instalação
Estrutura de dados
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 16 / 61
Instalação
Estrutura de dados
>>> english_to_portuguese.values()
dict_values([’tijolo’, ’porco’, ’casa’, ’tr^es’, ’lobo’])
>>> del(english_to_portuguese[’pig’])
>>> print(english_to_portuguese)
{’brick’: ’tijolo’, ’house’: ’casa’, ’three’: ’tr^es’, ’wolf’: ’lobo’
>>>print( "wolf" in english_to_portuguese )
Método Função
a.clear() Remove todos os itens do dicionário.
a.copy() Cria uma cópia de um dicionário.
a.update(b) Copia itens de b para a.
a.get(k,d) Retorna a[k] se a chave k existir, senão d (opcional) .
a.popitem() Remove o último valor e o retorna.
Tabela: Métodos de dicionários
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 17 / 61
Instalação
Estrutura de dados
Alguns exemplos
>>> eng2pt=english_to_portuguese.copy()
>>> print(eng2pt)
{’brick’: ’tijolo’, ’house’: ’casa’, ’three’: ’tr^es’, ’wolf’: ’lobo’
>>> eng2pt.clear()
>>> eng2pt.update(english_to_portuguese)
>>> print(eng2pt)
{’brick’: ’tijolo’, ’house’: ’casa’, ’three’: ’tr^es’, ’wolf’: ’lobo’
>>> eng2pt.get(’wolf’,’three’)
’lobo’
>>> eng2pt.get(’mouse’,’three’)
’tr^
es’
>>> eng2pt.popitem()
(’brick’, ’tijolo’)
>>> print(eng2pt)
{’house’: ’casa’, ’three’: ’tr^es’, ’wolf’: ’lobo’}
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 18 / 61
Instalação
Estrutura de dados
Exercı́cio
Crie um programa que mostre a quantidade de peças de uma oficina mecânica em
um estoque usando um dicionário e também o preço unitário da peça, usando
outro dicionário.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 19 / 61
Instalação
Entrada de dados
Iremos trabalhar agora com a entrada de dados feita pelo usuário
>>>x= input("Digite um número:")
>>>print(x)
>>>nome=input("Digite o seu nome: ")
>>>print("Boa noite %s, como voc^ e está?" % nome)
Os dados de entrada são tratados como uma string. Se quisermos fazer
uma operação matemática com eles, temos que proceder com uma conversão
para int ou mesmo float
>>> anos= input("Digite sua idade:")
Digite sua idade:18
>>> type(anos)
<class ’str’>
>>> print("Em 2021 voc^ e terá %s" %anos+5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can’t convert ’int’ object to str implicitly
>>> print("Em 2021 voc^ e terá %s" % (int(anos)+5))
Em 2021 voc^ e terá 23
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 20 / 61
Instalação
Entrada de dados
Exercı́cio
Qual deve ser a saı́da deste programa?
>>>word=input("Entre uma palavra: ")
Entre uma palavra: teste
>>>print(word+’ completo’)
Exercı́cio
Faça um programa que peça dois números inteiros ao usuário e imprima a soma
desses dois números na tela.
Exercı́cio
Escreva um programa que converta a temperatura digitada em ◦ C em ◦ F , usando
a fórmula
9×C
F = + 32
5
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 21 / 61
Controle de Fluxo
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 23 / 61
Controle de Fluxo
Controle de Fluxo
idade=int(input("Digite a idade do seu carro: "))
if idade <=3:
print("Parabéns seu carro é novo!")
else:
print("Por que n~ao trocar de carro?")
O Python usa um espaço em branco no começo da linha para delimitar um bloco
de código obrigatóriamente.
Exercı́cio
Qual é a saı́da deste programa?
if num >3:
print("maior que 3")
if num < 5:
print("menor que 5")
if num==7:
print("igual a 7")
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 24 / 61
Controle de Fluxo
Controle de Fluxo
Podemos usar ainda if, elif e else. O elif substitui uma estrutura com
else:if aninhado:
if num==1:
#Esse bloco é executado se num for igual a 1
print("num é igual a um")
elif num==2:
#agora este bloco é executado se num for igual a 2
pass #essa instruç~
ao simplesmente deixa o fluxo continuar
else:
#Se nenhuma das condiç~
oes anteriores foi implementada temos a execuç
print(’num é maior que 2’)
Exercı́cio
Escreva um programa que pergunte a velocidade do carro de um usuário. Caso
ultrapasse 80 km/h, exiba uma mensagem dizendo que usuário foi multado. Nesse
caso exiba o valor da multa também, cobrando R$ 5 por km/h acima de 80 km/h.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 25 / 61
Controle de Fluxo
Controle de Fluxo
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 26 / 61
Controle de Fluxo
Controle de Fluxo
Podemos usar o programa no interpretador diretamente usando
>>> a=5;b=8
>>> if a>b:
... print("a é maior que b")
... c="maior"
... elif a==b:
... print("a é igual a b")
... c="igual"
... else:
... print("a é menor do que b")
... c="menor"
...
a é menor do que b
>>> print(a,c,b)
5 menor 8
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 27 / 61
Controle de Fluxo
Controle de Fluxo
Exercı́cio
Escreva um programa que calcule o preço a pagar pelo fornecimento de energia
elétrica. Pergunte a quantidade em kWh consumida e o tipo de instalação: R para
residências, I para industrias e C para comércios. Calcule o preco a pagar de
acordo com a seguinte tabela:
Tipo Faixa (kWh) Preço
Residêncial até 500 R$ 0,40
Acima de 500 R$ 0,65
Comercial Até 1000 R$ 0,55
Acima de 1000 R$ 0,60
Industrial Até 5000 R$ 0,55
Acima de 5000 R$ 0,60
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 28 / 61
Controle de Fluxo
Estruturas de repetição
O laço while repete uma tarefa enquanto uma condição for verdadeira:
#Usando o laço while
i=0
while i<10:
i+=1
print(i)
#Usando o laço for
for i in range(1,10,2):
print(i)
O range cria um iterador e aceita os seguintes argumentos: inı́cio, fim e
passo, respectivamente. Podemos criar uma lista com
list(range(0,10,2))
O laço for nos permite iterar sobre uma sequência atribuindo os elementos
da mesma a uma variável, sequencialmente à medida que prossegue.
Exercı́cio
Faça um programa que escreva a contagem regressiva do lançamento de um
foguete. O programa deve imprimir 10, 9,8,..,1,0, Ignição! na tela
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 29 / 61
Controle de Fluxo
Estruturas de repetição
Podemos iterar sobre a lista e seu ı́ndice, usando o enumerate
>>> list=[’Jorge’,’Mauricio’, ’Flávio’,’Matheus’, ’Marcio’]
>>> for n,e in enumerate(list):
... print("%s: %s" %(n,e))
...
0: Jorge
1: Mauricio
2: Flávio
3: Matheus
4: Marcio
Usando o zip podemos iterar em duas listas:
>>> list2=[’professor’,’funcionário’,’aluno’,’tutor’,’coordenado
>>> for p,r in zip(list2,list):
... print("Quem é o %s?%s" %(p,r))
Quem é o professor?Jorge
Quem é o funcionário?Mauricio
Quem é o aluno?Flávio
Quem é o tutor?Matheus
Quem é o coordenador?Marcio
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 30 / 61
Controle de Fluxo
Estruturas de repetição
Podemos iterar sobre uma sequência ordenada ou na ordem reversa
>>> supermercado=[’macarr~
ao’,’arroz’,’ovo’,’frango’]
>>> for i in sorted(supermercado):
... print(i)
...
arroz
frango
macarr~ao
ovo
>>> for i in reversed(range(5)):
... print(i)
...
4
3
2
1
0
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 31 / 61
Controle de Fluxo
Estruturas de repetição
Podemos usar o break para finalizar uma iteração (ou continue para
continuar...)
>>> i=9
>>> for i in reversed(range(10)):
>>> while True:
... if(i>5):
... if(i>5):
... print(i)
... print(i)
... else:
... i=i-1
... break
... else:
...
... break
Um outro tipo de problema
#Imprimindo a tabuada dada pelo usuário
n=int(input("Tabuada do:"))
x=1
while(x<=10):
print("%s vezes %s =%s" %(n,x,n*x))
x=x+1
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 32 / 61
Controle de Fluxo
Estruturas de repetição
Exercı́cio
Refaça o programa anterior usando o for
Exercı́cio
Modifique o programa anterior de forma que o usuário também consiga digitar o
inı́cio e o fim da tabuada, em vez de começar de 0 até 10.
Estruturas de repetição
Exercı́cio
Escreva um programa que pergunte o valor inicial de uma dı́vida e o juro mensal.
Pergunte também o valor mensal que será pago. Imprima o número de meses para
que a dı́vida seja paga, o total pago e o total de juros pago.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 34 / 61
Controle de Fluxo
Estruturas de repetição
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 35 / 61
Controle de Fluxo
Funções
Um exemplo de definição de uma função e pré-atribuição de valores nela:
def fun(a,b=1):
print(a,b)
fun(2)
fun(2,3)
Em python podemos ter um número variável de argumentos precedidos por *
ou **; argumentos passados anoninamente são guardados em uma tupla
enquanto os nominais são armazenados em um dicionário.
def fun2(*t,**d):
print(t,d)
fun2(1,2,c=3,q=’adsd’)
Funções podem retornar valores usando a palavra reservada return
>>> def soma(a,b):
... return a+b
... #digite enter novamente!
>>> soma(3,4)
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 36 / 61
Controle de Fluxo
Funções
Exercı́cio
Escreva uma função que retorne o maior de dois números.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 37 / 61
Controle de Fluxo
Funções
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 38 / 61
Controle de Fluxo
Funções
Em funções podemos ter variáveis locais, que existe apenas dentro delas e
cujos valores não podem ser acessados fora dela, como também variáveis
globais. No entanto devemos ter cuidado ao modificar variáveis globais. Por
exemplo
a=5 #Variável global
def muda_e_imprime():
a=7 #Tentaremos mudar o valor de a
print("a dentro da funç~ ao:%d" %a)
agora no interpretador avalie o valor de a antes e depois de usar a função
muda_e_imprime(). Viu que não mudou?
Façamos a seguinte modificação:
a=5 #Variável global
def muda_e_imprime():
global a
a=7 #Tentaremos mudar o valor de a
print("a dentro da funç~ ao:%d" %a)
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 39 / 61
Controle de Fluxo
Funções
Vejamos agora a seguinte função:
def soma(L):
total=0
x=0
while x<5:
total+=L[x]
x+=1
return total
Use print(soma(L)) para mostrar a soma de uma lista. Faça isso para as
seguintes listas
L=[1,2,2,4,5]
L=[1,2]
L=[1,8,2,3,5,6,9,10]
Exercı́cio
Reescreva o programa de forma a utilizar o for ao invés do while
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 40 / 61
Controle de Fluxo
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 41 / 61
Controle de Fluxo
Exercı́cio
Crie um programa onde seja solicitado ao usuário o nome, a idade e a profissão.
Após o usuário entrar com os dados , seja impresso na tela as informações deste
usuário. Use try para tratar possı́veis erros.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 42 / 61
Controle de Fluxo
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 43 / 61
Controle de Fluxo
A cláusula finally pode ser usada para se assegurar que mesmo que ocorra
algum erro, uma determinada seqüência de comandos vai ser executada
try:
x=int(input("Entre com um número:" ))
except:
print("Deu Bode!")
finally:
print("Dando um valor para x") #executado de qualquer forma,
x=2 #mesmo que n~ ao tenha erro!
print(x)
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 44 / 61
Controle de Fluxo
Exercı́cio
Escreva um programa que pesquise um determinado valor em uma lista, usando
lista.index(elemento) e a exceção ValueError.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 45 / 61
Controle de Fluxo
Exercı́cio
Crie uma classe Conta que tenha como atributos saldo,número e clientes, o
último uma lista no caso de conta conjunta.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 49 / 61
Controle de Fluxo
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 50 / 61
Controle de Fluxo
Exercı́cio
Implemente a classe ContaEspecial, a qual herda os atributos e métodos
anteriores e tem um atributo a mais, limite. Com isso você vai ter que redefinir
o atributo saque
Exercı́cio
Altere a classe ContaEspecial de forma que seu extrato exiba o limite e o total
disponı́vel para saque.
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 52 / 61
Controle de Fluxo
Banco de Dados
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 53 / 61
Controle de Fluxo
Banco de Dados
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 54 / 61
Controle de Fluxo
Banco de Dados
Podemos alterar a entrada
import sqlite3
conex~
ao=sqlite3.connect("agenda.db")
cursor=conex~ ao.cursor()
cursor.execute(""" update agenda
set telefone=’1234-456’
where nome=’nilo’""")
conex~
ao.commit()
conex~
ao.close()
e finalmente remover esta entrada
import sqlite3
conex~ ao=sqlite3.connect("agenda.db")
cursor=conex~ ao.cursor()
cursor.execute(""" delete from agenda
where nome=’nilo’""")
conex~ ao.commit()
conex~ ao.close()
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 55 / 61
Controle de Fluxo
Banco de Dados
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 56 / 61
Controle de Fluxo
Janelas
Criando uma aplicação simples usando o Tkinter
widget é um objeto visual: um botão, um menu, etc; Um clique de um
mouse é um evento. Assim event handler serve para tratar estes eventos.
frame é um contêiner no qual o widget está instalado. O frame primário é o
toplevel que é a janela que tem os botões de sair, minimizar, etc
No exemplo à seguir iremos criar uma janela (fr1) e um botão (botao). O
método pack é que torna estes elementos visı́veis.
from tkinter import *
class Janela:
def __init__(self,toplevel):
self.fr1 = Frame(toplevel)
self.fr1.pack()
self.botao = Button(self.fr1, text=’Oi!’, background=’green’)
self.botao.pack()
raiz=Tk()
Janela(raiz)
raiz.mainloop() #fica sempre aberta esperando um evento
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 57 / 61
Controle de Fluxo
Janelas
Iremos vamos relacionar o funcionamento do nosso botão com um evento (no
caso o click do botão esquerdo do mouse, <Button-1>, usando o bind() e
um método chamado, neste caso de muda_cor
from tkinter import *
class Janela:
def __init__(self,toplevel):
self.frame=Frame(toplevel)
self.frame.pack()
self.texto=Label(self.frame, text=’Clique para ficar amarelo’)
self.texto[’width’]=26
self.texto[’height’]=3
self.texto.pack()
self.botaoverde=Button(self.frame,text=’Clique’)
self.botaoverde[’background’]=’green’
self.botaoverde.bind("<Button-1>",self.muda_cor)
self.botaoverde.pack()
def muda_cor(self, event): # Muda a cor do botao!
if self.botaoverde[’bg’]==’green’:
self.botaoverde[’bg’]=’yellow’
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 58 / 61
Controle de Fluxo
Janelas
raiz=Tk()
Janela(raiz)
raiz.mainloop()
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 59 / 61
Controle de Fluxo
Android e Kivy
Instale o VirtualBox :https://www.virtualbox.org/wiki/Downloads
Faça download da máquina virtual do Kivy em http://kivy.org/#download
Instale alguns pacotes como (dentro de um terminal da máquina virtual):
sudo apt-get install python-kivy
sudo apt-get install geany
a senha é kivy Crie o main.py (use o geany):
import kivy
kivy.require(’1.9.0’)
from kivy.app import App
from kivy.uix.image import Image
from kivy.uix.widget import Widget
class ShowImage(Image):
pass
class MyApp(App):
def build(self):
return ShowImage(source=’Minha_figura.jpg’,pos=(0,0),size=(5
if __name__ == ’__main__’:
MyApp().run()
No linux é possı́vel rodar o programa no terminal python main.py
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 60 / 61
Controle de Fluxo
Android e Kivy
Marco Dias ( Fundação Florestan Fernandes e Unifesp) Introdução à Programação Usando Python 30 de setembro de 2020 61 / 61