Você está na página 1de 43

POO / Programação

orientada a objetos
•A Programação Orientada a Objetos (OOP) é um paradigma de
programação que fornece uma maneira de estruturar
programas para que as propriedades e os comportamentos
sejam agrupados em objetos individuais.

Por exemplo, um objeto pode representar uma pessoa com


propriedades como nome, idade e endereço e comportamentos
como andar, falar e correr.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Objetos / Classes
Porque se utiliza classes e objetos

1. Organização de código mais complexo.


2. Ajudam a criar código reusável
3. São usados em diferentes aplicações
4. Certos módulos necessitam de classes
5. Facilitam o trabalho dentro de um intervalo
Necessidade
para classes

Complexidade código

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


POO / Classes
Quando analisamos por exemplo os tipos de variáveis em Python
(inteiros, reais).
x=5 a = “nome”
print(type(x)) print(type(a))
<class 'int'> <class 'str'>

São identificados como uma classe.

Em Python, uma classe é um projeto para um objeto. Podemos


pensar neste conceito como um esboço de uma casa. Ele contém
todos os detalhes sobre os pisos, portas, janelas etc.
Com base nessas descrições, construímos a casa. A casa é o objeto.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


POO / Classes
É permitido em Python criar novos tipos de dados (classes).
Uma programação orientada a objetos (POO) é essencialmente
um conjuntos de classes onde objetos interagem entre si
executando as respetivas funcionalidades.
Uma classe é uma estrutura de dados que que define as
variáveis (atributos) e funções (métodos) de uma família de
objetos.

Métodos: são funções definidas dentro do corpo de uma classe.


Eles são usados para definir os comportamentos dos objetos.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes
Uma classe é um coleção de atributos e métodos .
Descrição do que algo (objeto) é, e o que faz.
Com uma classe é possível construir de objetos.

-Criar uma classe

class Aula:
x=5

Classe denominada Aula e com uma propriedade x.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes
class Exemplo:
x=5

ob1 = Exemplo()
print(ob1.x)

No exemplo acima criamos o objeto ob1 e imprimimos o valor


de x.

Estes exemplo de classes estão a sua forma mais simples não


tem real utilidade, os exemplos seguintes mostrarão outras
potencialidades.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes
As classes em Python podem também ter métodos definidos:

class Exemplo:
def sauda(self):
print (“Ola Mundo”)

ob1 = Exemplo()
ob1.sauda()
No exemplo acima o método saúda mostra no ecrã Ola Mundo

O parâmetro self é uma referência à atual da classe e é usado


para aceder às variáveis e métodos da classe.
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Classes
Criação da classe animal
class Animal:
Criação de uma função dentro da classe
def ladra(self): (método), o parâmetro self é incluindo porque
print(“O Cão ladra”) quando se chama um método a partir de um
objeto o Python tem enviar pelo menos o
def adiciona(self,x):
objeto como primeiro parâmetro.
return x+1
É possível no entanto enviar para os métodos
c = Animal() outros parâmetros para além do objeto.
d = Animal() Criação de dois objetos na classe animal

c.ladra() O Cão ladra


d.ladra() O Cão ladra
6
print(c.adiciona(5))
<class '__main__.Animal'>
print(type(c)) Identificamos a variável c como um objeto dentro da classe
Animal ligado à classe __main__ (módulo que se está a
executar)
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Classes
class Pessoa:
def fala(self):
print(“A pessoa fala”)
a = Pessoa()
a.nome=(“José”) Uma vez criada a classe é
possível conceder atributos aos
a.idade=32
objetos dessa classe
print (a.nome)
print (a.idade)

Uma maneira mais simples é conceder esses atributos quando o objeto


é criado passando os atributos requeridos.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes
class Pessoa: as classes tem uma função
def __init__(self, nome, idade): especial __init__(),
self.nome = nome denominada de construtor é
sempre executada quando a
self.idade = idade
classe se inicia. A função atribui
valores a propriedades dos
ob1 = Pessoa ("José", 32) objetos ou outras operações
necessárias quando o objeto é
criado.
print (ob1.nome)
print (ob1.idade)

Quando não criada explicitamente a função __init__() é chamada


automaticamente sempre que uma classe é usada para criar um objeto.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
Os métodos em podem
chamar atributos que
def func1(self): pertencem à classe
print("O meu nome é" + self.nome)

ob1 = Pessoa ("José", 32)


ob1.func1()

O comando self referencia a própria classe e é usado para aceder a


variáveis que pertencem à classe.

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes
class Pessoa: O comando self não tem de
ser denominado
def __init__(micro, nome, idade):
explicitamente, mas a variável
micro.nome = nome que está a cumprir essa
micro.idade = idade função tem de ser o primeiro
parâmetro de qualquer
def func1(soft): função numa classe
print("O meu nome é " + soft.nome)

Este procedimento não é


ob1 = Pessoa ("José", 32) comummente utilizado por
ob1.func1() ser mais confuso e por isso
deve ser evitado

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes
É possível modificar propriedade de objetos, chamando o objeto e
introduzindo a nova propriedade,

ob1.idade = 40

É possível também apagar objetos:

del ob1

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes / atributos
class Produto:
Atributo de classe Atribuição de tipos de variáveis
margem=0.2
(global) nos atributos passados
def __init__(self, nome:str, preco:float, quant=1): Atribuição de um valor padrão
caso não seja passado esse valor
assert preco>0 , ("Preço", preco , "tem de ser maior que 0")
self.nome = nome
self.preco = preco Validação do valor passado
self.quant = quant Criação das com mensagem em caso
propriedades da classe negativo
def lucro(self):
Métodos envolvendo as
print("O ganho é", self.preco*self.quant)
argumentos passados
print("O lucro é", (self.preco*self.quant)*Produto.margem)
e um atributo de classe
objcta = Produto("TV", 100 )
Criação dos objetos
objctb = Produto("DVD", 10,5)
O ganho é 100
objcta.lucro() O lucro é 20.0
objctb.lucro() O ganho é 50
O lucro é 10.0
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
Classes / Herança

A herança é uma maneira de criar uma nova classe usando


detalhes de uma classe existente sem modificá-la.

class Estudante(Pessoa):
def __init__(self, nome, idade, matricula):
Pessoa.__init__(self, nome, idade)
self.matricula = matricula

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes / Herança
class Animais:
def __init__(self, especie, alimentacao):
As classes são
hierárquicas, significa
self.especie = especie
que existe um elo entre
self.alimentacao = alimentacao
as classes ascendentes
e descendentes.
def fun_animal(self):
print ("O/A " + self.especie + " é um animal" )
É possível criar
diferentes níveis de
class Mamifero(Animais):
classes
def fun_esp(self):
(Classes – subclasses –
print("A espécie de mamífero é o/a " + self.alimentacao)
subsubclasses …)
class Aves(Animais):
def fun_alim(self):
print("A " + self.especie + " é " + self.alimentacao)

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes / Herança
class Animais:
def __init__(self, especie, alimentacao):
self.especie = especie
a.fun_animal()
self.alimentacao = alimentacao a.fun_esp()
def fun_animal(self): b.fun_animal()
print ("O/A " + self.especie + " é um animal" ) c.fun_alim()
c.fun_esp()
class Mamifero(Animais):
def fun_esp(self):
print("A espécie de mamífero é o/a " + self.alimentacao)
class Aves(Animais): O/A Cão é um animal
A espécie de mamífero é o/a carnívoro
def fun_alim(self): O/A Galinha é um animal
A Aguia é carnívoro
print("A " + self.especie + " é " + self.alimentacao)
---------------------------------------------
a = Mamifero("Cão", "carnívoro") AttributeError Traceback (most recent call last)
<ipython-input-26-10bd6d5b3d7e> in <module>
23 b.fun_animal()
b = Aves("Galinha", "herbívoro") 24 c.fun_alim()
---> 25 c.fun_esp()
c = Aves("Aguia", "carnívoro") AttributeError: 'Aves' object has no attribute
'fun_esp'

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes / Polimorfismo
Polimorfismo, em Python, é a capacidade que uma subclasse de ter métodos
com o mesmo nome da sua superclasse, e o programa saber qual método deve
ser invocado, especificamente (da superclasse ou subclasse).

Ou seja, o objeto tem a capacidade de assumir diferentes formas


(polimorfismo)
class Super:
def hello(self):
class Super: print("Olá, sou a superclasse!")
def hello(self):
print("Olá, sou a superclasse!") class Sub (Super):
def hello(self):
print("Olá, sou a subclasse!")
teste = Super()
teste.hello() teste = Sub()
teste.hello()
Olá, sou a superclasse! Olá, sou a subclasse!

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Classes / Polimorfismo
No exemplo anterior quando o método hello() é chamado, é o método da
subclasse e não da superclasse que é executado. O Python entende que apesar
do mesmo nome deve invocar o método associado à subclasse de nível inferior
pois é mais específico.

class Super:
def hello(self):
print("Olá, sou a superclasse!")
teste = Subsub()
class Sub (Super): teste.hello()
def hello(self):
print("Olá, sou a subclasse!")
Olá, sou a subsubclasse!
class Subsub (Sub):
def hello(self):
print("Olá, sou a subsubclasse!")

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Calculadora OOP vs Funcional
def soma(num1, num2):
if selec == 1:
return num1 + num2
print(num_1, "+", num_2, "=",
def subtracao(num1, num2): soma(num_1, num_2))
return num1 - num2 elif selec == 2:
def multiplicacao(num1, num2): print(num_1, "-", num_2, "=",
return num1 * num2 subtracao(num_1, num_2))
elif selec == 3:
def divisao(num1, num2): print(num_1, "*", num_2, "=",
return num1 / num2 multiplicacao(num_1, num_2))
print("Escolher a operação \n" \ elif selec == 4:
"1. Soma\n" \ print(num_1, "/", num_2, "=",
"2. Subtracão\n" \ divisao(num_1, num_2))
"3. Multiplicação\n" \ else:
"4. Divisão\n") print("Não válido")

selec = int(input("Selecionar a operação 1, 2, 3, 4 :"))


num_1 = int(input("Qual o primeiro número: "))
num_2 = int(input("Qual o segundo número: "))

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


Calculadora OOP vs Funcional
class calculadora(): selec = int(input("Selecionar a operação 1, 2, 3, 4 :"))
def __init__(self,x,y): x=int(input("Qual o primeiro número : "))
self.x=x y=int(input("Qual o segundo número : "))
self.y=y
def soma(self): n1=calculadora(x,y)
print("Soma :",self.x+self.y)
if selec == 1:
def subtracao(self): n1.soma()
print("Subtração :",self.x-self.y) elif selec == 2:
def multiplicacao(self): n1.subtracao()
print("Multiplicação :",self.x*self.y) elif selec == 3:
n1.multiplicacao()
def divisao(self):
elif selec == 4:
print("Divisão :",self.x/self.y)
n1.divisao()
print("Escolher a operação -\n" \ else:
"1. Soma\n" \ print("Não válido")
"2. Subtracão\n" \
"3. Multiplicação\n" \
"4. Divisão\n")
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
GUI - Python
Existem múltiplas bibliotecas para
construir GUI - Graphic User Interfaces
-PyQt5
-Wxpython
-Kivy
-PyForms
-PyGUI
-libavg
-Tkinter
….

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Tkinter é uma biblioteca
utilizada frequentemente
para construir GUI’s.
-Relativamente simples
-Consome poucos recursos

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Primeiros passos - Criação da janela

from tkinter import *


janela = Tk()
janela.title (“Janela Teste”)
janela.mainloop()

ou

import tkinter as tk Importa o módulo


janela = tk.Tk() Cria a janela principal
janela.title (“Janela Teste”) Dá o nome à janela criada
janela.mainloop() Chama o ciclo de gestão de eventos

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Criação de uma “label”
from tkinter import *
window = Tk()
window.title ("Janela Teste")
window.geometry('350x200’)
lbl = Label(window, text="Olá Mundo")
lbl.grid()
window.mainloop()

Ajuste do tamanho da janela ao tamanho do Label


from tkinter import *
window = Tk()
window.title ("Janela Teste")
lbl = Label(window, text="Olá Mundo")
lbl.pack()
window.mainloop()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Alteração na “label” (fonte, tamanho ..)
from tkinter import *
window = Tk()
window.title ("Janela Teste")
window.geometry('350x200')
lbl = Label(window, text="Teste 2", font=("Arial Bold", 40))
lbl.grid()
window.mainloop()

Alteração na “label”
(fonte, cor ..)
from tkinter import *
window = Tk()
window.title ("Janela Teste")
window.geometry("350x200")
lbl = Label(window, text="Teste 3", font=30, background="#34A2FE")
lbl.grid()
window.mainloop()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Outra label e a sua organização na janela
from tkinter import *
window = Tk()
window.title ("Janela Teste")
window.geometry('350x200')
lbl = Label(window, text="Teste A", fg = "green", font=30)
lbl.grid(row=1,column=2)
lbl2 = Label(window, text="Teste B",fg="red", font=40)
lbl2.grid(row=1,column=1)
window.mainloop()

Outros formatos na label


from tkinter import *
window = Tk()
window.title ("Janela Teste")
window.geometry("350x200")
lbl = Label(window, text="Teste 4",fg="yellow",bg="black", width=10, height=10)
lbl.grid()
window.mainloop()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Criação de um “botão” e localização do mesmo

from tkinter import *


window = Tk()
window.title("Janela Teste")
window.geometry('350x200')
lbl = Label(window, text="Teste2")
lbl.grid(column=0, row=0)
btn = Button(window, text="Clicar Aqui")
btn.grid(column=1, row=0)
window.mainloop()

Criação e dimensionamento de uma janela de edição de texto


from tkinter import *
window = Tk()
window.title("Janela Teste")
window.geometry('350x200')
lbl = Label(window, text="Olá Mundo")
lbl.grid(column=0, row=0)
txt = Text(window, height=20, width=30)
txt.grid(column=0, row=1)
window.mainloop()
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
GUI - tkinter
Criação de um botão e de uma ação ao premir
from tkinter import *
window = Tk()
window.title("Janela Teste")
window.geometry('350x200')
lbl = Label(window, text="Olá Mundo")
lbl.grid(column=0, row=0)

def clicked():
lbl.configure(text="Botão pressionado !!")
lbl.grid(column=0, row=3)

btn = Button(window, text="Clicar", bg=“Red”, command=clicked)


btn.grid(column=0, row=1)

window.mainloop()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Existe uma versão atualizada de alguns widgets
from tkinter import *
from tkinter.ttk import *
window = Tk()
window.title("Janela Teste")
window.geometry('350x200')
lbl = Label(window, text="Olá Mundo")
lbl.grid(column=0, row=0)

def clicked():
lbl.configure(text="Botão pressionado !!")
lbl.grid(column=0, row=3)

from tkinter import ttk btn = Button(window, text="Clicar", command=clicked)


btn.grid(column=0, row=1)
import tkinter
janela = tkinter.Tk() window.mainloop()
janela.title ("Janela Teste")
janela.geometry("350x200")
style = ttk.Style()
style.configure("BW.TLabel", foreground="white", background="black")
l1 = ttk.Label(janela, text="Test", style="BW.TLabel")
l1.pack()
ttk.Style().configure("TButton", padding=6, relief="flat", background="#ccc")
btn = ttk.Button(janela, text="Clicar")
btn.pack()
window.mainloop()
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
GUI - tkinter
Criação de uma “label” e de uma caixa entrada texto de linha única
from tkinter import *
window = Tk()
window.title ("Janela Teste")
window.geometry('350x200')
lbl = Label(window, text="Qual é o nome",fg="red", font=20)
lbl.grid(row=1,column=1)
res = Entry(window)
res.grid(row=2,column=1)
window.mainloop()

Com o texto inserido no widget (entry), o texto não é enviado para o seu
programa. Pode-se no entanto utilizar .get() para recuperar o texto e atribuí-lo
a uma variável ex:

nome = res.get()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Criação de botões em alternativa
from tkinter import *
window = Tk()
window.title("Janela Teste")
selected = IntVar()
rad1 = Radiobutton(window,text='Primeiro', value=1, variable=selected)
rad2 = Radiobutton(window,text='Segundo', value=2, variable=selected)
rad3 = Radiobutton(window,text='Terceiro', value=3, variable=selected)
def clicked():
print(selected.get())
btn = Button(window, text="Click", command=clicked)
rad1.grid(column=0, row=0)
rad2.grid(column=1, row=0)
rad3.grid(column=2, row=0)
btn.grid(column=3, row=0)
window.mainloop()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Lista de alguns do Widgets disponíveis no módulo

Button - Um botão simples usado para executar um comando


Canvas - Gráficos estruturados
Checkbutton - Representa uma variável que pode ter dois valores distintos
(tipicamente um valor booleano). Clicando no botão alterna-se entre os valores
Entry - Um campo para entrada de uma linha de texto
Frame - Usado como agrupador de widgets
Label - Mostra um texto ou uma imagem
Listbox -
Mostra uma lista de alternativas. Pode ser configurado para ter comportamento de checkbutton ou radiobutton
Menu - Um painel de menu. Implementa menus de janela, pulldowns e popups
Message - Similar ao widget Label, mas tem mais facilidade para mostrar texto quebrado em linhas
Radiobutton - Representa um possível valor de uma variável que tem um de muitos
valores. Clicando o botão, a variável assume aquele valor
Scale - Permite especificar um valor numérico através de um ponteiro em uma
escala linear
Scrollbar - Barra de rolamento para widgets que têm superfície útil variável
(Text, Canvas, Entry, Listbox)
Text - Exibe e permite editar texto formatado. Também suporta imagens e janelas embutidas
Toplevel - Uma janela separada

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter

Widgets

Contentores Botões
Texto

Frame Canvas Button Radiobutton Checkbutton

Label Entry Text

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Exemplos da representação gráfica dos Widgets

Scale Entry

Radiobutton

Button

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Métodos comummente usados no módulo tkinter
variavel.get() - recolhe o valor do campo de preenchimento num widget podendo ser atribuída a outra
variável

variavel.pack - diz para a janela se necessário se dimensionar ao tamanho da variável no ecrã e mostra a
variável na janela.

variavel.grid - cria uma grelha virtual na janela que pode ser usada para dispor os diferentes widgets

variavel.place - diz explicitamente o local onde se pode colocar o widget

janela.quit - fecha a janela

janela.mainloop() - cria um loop na janela criada só termina quando a janela é fechada

janela.title() -titulo da janela

janela.geometry() - tamanho da janela em pixel ex: 400x200

Nota importante : Para que as variáveis funcionem corretamente na entrada de alguns Widgets ou para
rastrear as alterações nos valores inseridos, as variáveis têm que ser criadas. Para isso usa-se:

var = StringVar() (strings) ou var = IntVar() (inteiros)


var = DoubleVar() (reais) ou var = BooleanVar() (booleanos)

Para efetuar a leitura de uma entrada num campo de um Widget recorre-se normalmente ao método .get().
Podendo posteriormente atribuir essa leitura a uma outra variável.
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
GUI - tkinter
Criação de painel de menu

from tkinter import *


def abrir(): print ("abrir")
def salvar(): print ("salvar")
def ajuda() : print ("ajuda")
janela=Tk()
principal=Menu(janela)
arquivo=Menu(principal)
arquivo.add_command(label="Abrir",command=abrir)
arquivo.add_command(label="Salvar",command=salvar)
principal.add_cascade(label="Arquivo",menu=arquivo)
principal.add_command(label="Ajuda",command=ajuda)
janela.configure(menu=principal)
janela.mainloop()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI - tkinter
Desenhos na janela

from tkinter import *

canvas_width = 190
canvas_height =150

master = Tk()

w = Canvas(master,
width=canvas_width,
height=canvas_height)
w.pack()

w.create_oval(50,50,100,100)

mainloop()

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI – tkinter (Exemplo)
Criar um interface gráfico para o programa de conversão de temperatura ?
from tkinter import * #importa a biblioteca
janela = Tk() # atribui à variavel janela o módulo
janela.title("Conversor Temperatura") # titulo da janela
janela.geometry("500x400") #tamanho da janela

def calculo(): # criação da função calculo


aux = fahrenheit.get() # recolhe o valor do campo de preenchimento da variavel "fahrenheit" e atribui à variável "aux"
celsius = round((5/9 * (float(aux)-32)),2) # realiza o calculo convertendo ao mesmo tempo a variável aux num float e arredondado o
resultado a 2 casas
mostra = Label(janela, text=celsius, font="Arial" ) #Cria variável "mostra" com o "texto" dado pela variável celsius
mostra.place(x =240, y =215) #Coloca a variavel "mostra" na posição x,y indicada pelo método .place
cabecalho = Label(janela, text="Conversor de F a ºC", font="Arial", fg="Red") # Cria variável "cabecalho" com texto
#indicado na janela criada usando a fonte Arial na cor vermelha

cabecalho.place(x=140, y=20) #Coloca a variavel "cabecalho" na posição x,y indicada pelo método .place
pergunta = Label(janela, text="Temperatura em F:") # Cria variável "pergunta" com texto indicado na janela criada inicialmente
pergunta.place(x=100, y=100) #Coloca a variável "pergunta" na posição x,y indicada pelo método .place
fahrenheit = Entry(janela) # Cria variavel "fahrenheit" que é um campo de preenchimento de texto usando a função Entry
fahrenheit.place(x=220, y=100) #Coloca o campo criado na posição x,y indicada pelo método .place
bt = Button(janela, text="Calcular", command=calculo) # Cria variável "bt" que é um butão de ação com o texto Calcular
e ao clicar corre a função indicada "calculo"
bt.place(x=240, y=160) #Coloca o butão criado na posição x,y indicada pelo método .place

res = Label(janela, text="Resultado :", background="yellow") # Cria variável "res" com texto indicado na janela com o fundo a amarelo
res.place(x=140, y=220) #Coloca a variavel "res" na posição x,y indicada pelo método .place

janela.mainloop() # executa a janela em loop

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI – tkinter (Exemplo)
Criar um interface gráfico para o programa de conversão de temperatura ?

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes


GUI – tkinter (Exemplo2)
Criar um interface gráfico para o programa de interconversão de temperatura ?
from tkinter import *
janela = Tk()
janela.title("Conversor Temperatura")
janela.geometry("500x400")
cabecalho = Label(janela, text="Converter para : ", font="Arial", fg="Red")
cabecalho.place(x=140, y=20)

def escolha():
seleciona = var.get()

def calculo1():
aux = fahrenheit.get()
calc1 = round((5/9 * (float(aux)-32)),2)
mostra = Label(janela, text=calc1, font="Arial" )
mostra.place(x = 240, y = 320)
def calculo2():
aux2 = celsius.get()
calc2 = round((float(aux2)*9/5+32),2)
mostra = Label(janela, text=calc2, font="Arial" )
mostra.place(x =240, y = 320)
if seleciona == 1:
acao = calculo1
pergunta = Label(janela, text="Temp. em F ? :", font="Arial")
pergunta.place(x=100, y=200)
fahrenheit = Entry(janela)
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
GUI – tkinter (Exemplo2)
Criar um interface gráfico para o programa de interconversão de temperatura ?
fahrenheit.place(x=230, y=205)
bt2 = Button(janela, text="Calcular", font="Arial", command=calculo1)
bt2.place(x=190, y=250)
res1 = Label(janela, text="Resultado :", font="Arial", background="yellow")
res1.place(x=120, y=320)
if seleciona == 2:
acao = calculo2
pergunta2 = Label(janela, text="Temp. em C ? :", font="Arial")
pergunta2.place(x=100, y=200)
celsius = Entry(janela)
celsius.place(x=230, y=205)
bt3 = Button(janela, text="Calcular", font="Arial", command=calculo2)
bt3.place(x=190, y=250)
res2 = Label(janela, text="Resultado :", font="Arial", background="yellow")
res2.place(x=120, y=320)

var = IntVar()
rad1 = Radiobutton(janela,text="Celsius", font="Arial", value=1, variable=var)
rad1.place(x= 100, y=80)
rad2 = Radiobutton(janela,text="Fahrenheit",font="Arial", value=2, variable=var)
rad2.place(x= 240, y=80)
bt = Button(janela, text="Unidade", font="Arial", command=escolha)
bt.place(x=190, y=140)
janela.mainloop()
Licenciatura em Engenharia Biomédica Programação, Nelson Nunes
GUI – tkinter (Exemplo3)
Criar um interface gráfico para o programa de interconversão de temperatura ,
usando uma escala para introduzir o valor ?
Código igual ao anterior exemplo só modificando a parte abaixo

if seleciona == 1:
acao = calculo1
pergunta = Label(janela, text="Temp. em F ? :", font="Arial")
pergunta.place(x=100, y=200)
fahrenheit = Scale(janela, from_=0, to=200, length=200, tickinterval=50, orient=HORIZONTAL)
fahrenheit.place(x=260, y=190)
bt2 = Button(janela, text="Calcular", font="Arial", command=calculo1)
bt2.place(x=190, y=250)
res1 = Label(janela, text="Resultado :", font="Arial", background="yellow")
res1.place(x=120, y=320)

if seleciona == 2:
acao = calculo2
pergunta2 = Label(janela, text="Temp. em C ? :", font="Arial")
pergunta2.place(x=100, y=200)
celsius = Scale(janela, from_=0, to=200, length=200, tickinterval=50, orient=HORIZONTAL)
celsius.place(x=260, y=190)
bt3 = Button(janela, text="Calcular", font="Arial", command=calculo2)
bt3.place(x=190, y=250)
res2 = Label(janela, text="Resultado :", font="Arial", background="yellow")
res2.place(x=120, y=320)

Licenciatura em Engenharia Biomédica Programação, Nelson Nunes

Você também pode gostar