Olá pessoal, bem-vindos a mais um tutorial Python na prática.
Vamos construir uma Calculadora de Unidades de Medida em Python, este projeto será muito bom, pois irá apresentar a você os novos conceitos do Python, e como você também poderá colocar em prática o que tem estudado sobre Python.
Para este tutorial, você precisará de um conhecimento básico de Python Tkinter e Python Básicos.
Então, vamos começar nosso projeto.
Começaremos criando um novo arquivo python, e nele importaremos a biblioteca Tkinter como mostrado no código abaixo.
from tkinter import *
from tkinter import ttk
Em seguida, criaremos uma janela vazia para nosso aplicativo.
#------------- cores --------------
cor1 = "#3b3b3b" # black / preta
janela = Tk()
janela.title('')
janela.geometry('650x260')
janela.configure(bg=cor1)
janela.resizable(width=FALSE, height=FALSE)
janela.mainloop()
Agora vamos dividir nossa janela principal em três partes diferentes, usando frames
#------------- Frames -------------
frame_cima = Frame(janela, width=450, height=50,bg=cor2, pady=0, padx=3, relief="flat",)
frame_cima.place(x=2, y=2)
frame_direita = Frame(janela, width=450, height=220,bg=cor2, pady=0, padx=3, relief="flat",)
frame_direita.place(x=2, y=54)
frame_esquerda = Frame(janela, width=198, height=260,bg=cor2, pady=0, padx=0, relief="flat",)
frame_esquerda.place(x=454, y=2)
Depois disso, vamos aplicar um estilo à nossa janela principal, para dar uma aparência melhor ao aplicativo.
#------------ aplicando estilo ----------------
style = ttk.Style(janela)
style.theme_use("clam")
No Frame acima mostraremos o nome do aplicativo, então faremos o seguinte
#------------ Frame cima ----------------
l_app_nome = Label(frame_cima, text="Calculadora de Unidades de Medidas", height=1, padx=0, relief="flat", anchor="center", font=('Ivy 15 bold'), bg=cor2, fg=cor3)
l_app_nome.place(x=50, y=10)
Muito bem, em seguida iremos criar alguns botões no frame a direita , que mostrarão as opções disponíveis que teremos no aplicativo.
#------------ Frame Direita ----------------
b_0 = Button(frame_direita, text="Peso",width=10,height=2, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_0.grid(row=0, column=0, sticky=NSEW, pady=5, padx=5)
Agora vamos inserir uma imagem dentro do botão que indica o símbolo de peso.
A melhor maneira de inserir uma imagem e fazer uso dela, é usando a biblioteca PILLOW do python, você pode instalá-la usando o seguinte comando:
pip install Pillow
Depois de instalar o Pillow, agora importe-o para o script.
#------------- importando o PILLOW --------------
from PIL import ImageTk, Image
Ok, agora vamos inserir a imagem no botão usando Pillow para alterar o tamanho e a altura da imagem.
# botao e imagem para peso
img_0 = Image.open('images/weight.png')
img_0 = img_0.resize((50, 50), Image.ANTIALIAS)
img_0 = ImageTk.PhotoImage(img_0)
b_0 = Button(frame_direita, text="Peso",width=10,height=2, image=img_0, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_0.grid(row=0, column=0, sticky=NSEW, pady=5, padx=5)
Agora vamos fazer algumas configurações de estilo para que a imagem fique melhor dentro do botão.
b_0 = Button(frame_direita, text="Peso",width=130, height=50, image=img_0, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_0.grid(row=0, column=0, sticky=NSEW, pady=5, padx=5)
Agora vamos criar os botões restantes seguindo a mesma lógica.
#------------ Frame Direita ----------------
# botao e imagem para Peso
img_0 = Image.open('images/weight.png')
img_0 = img_0.resize((50, 50), Image.ANTIALIAS)
img_0 = ImageTk.PhotoImage(img_0)
b_0 = Button(frame_direita, text="Peso",width=130, height=50, image=img_0, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_0.grid(row=0, column=0, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Tempo
img_1 = Image.open('images/time.png')
img_1 = img_1.resize((50, 50), Image.ANTIALIAS)
img_1 = ImageTk.PhotoImage(img_1)
b_1 = Button(frame_direita, text="Tempo",width=130, height=50, image=img_1, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_1.grid(row=0, column=1, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Comprimento
img_2 = Image.open('images/length.png')
img_2 = img_2.resize((45, 45), Image.ANTIALIAS)
img_2 = ImageTk.PhotoImage(img_2)
b_2 = Button(frame_direita, text="Comprimento",width=130, height=50, image=img_2, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_2.grid(row=0, column=2, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Área
img_3 = Image.open('images/square.png')
img_3 = img_3.resize((50, 50), Image.ANTIALIAS)
img_3 = ImageTk.PhotoImage(img_3)
b_3 = Button(frame_direita, text="Área",width=130, height=50, image=img_3, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_3.grid(row=1, column=0, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Quantidade
img_4 = Image.open('images/volume.png')
img_4 = img_4.resize((50, 50), Image.ANTIALIAS)
img_4 = ImageTk.PhotoImage(img_4)
b_4 = Button(frame_direita, text="Quantidade",width=130, height=50, image=img_4, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_4.grid(row=1, column=1, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Velocidade
img_5 = Image.open('images/speed.png')
img_5 = img_5.resize((50, 50), Image.ANTIALIAS)
img_5 = ImageTk.PhotoImage(img_5)
b_5 = Button(frame_direita, text="Velocidade",width=130, height=50, image=img_5, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_5.grid(row=1, column=2, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Temperatura
img_6 = Image.open('images/temperature.png')
img_6 = img_6.resize((50, 50), Image.ANTIALIAS)
img_6 = ImageTk.PhotoImage(img_6)
b_6 = Button(frame_direita, text="Temperatura ",width=130, height=50, image=img_6, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_6.grid(row=2, column=0, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Energia
img_7 = Image.open('images/energy.png')
img_7 = img_7.resize((50, 50), Image.ANTIALIAS)
img_7 = ImageTk.PhotoImage(img_7)
b_7 = Button(frame_direita, text="Energia",width=130, height=50, image=img_7, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_7.grid(row=2, column=1, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Pressão
img_8 = Image.open('images/pressure.png')
img_8 = img_8.resize((50, 50), Image.ANTIALIAS)
img_8 = ImageTk.PhotoImage(img_8)
b_8 = Button(frame_direita, text="Pressão",width=130, height=50, image=img_8, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_8.grid(row=2, column=2, sticky=NSEW, pady=5, padx=5)
Muito bem, depois disso vamos criar algumas entradas e botões no frame a esquerda, então teremos:
#------------ Frame Esquerda ----------------
l_unidade = Label(frame_esquerda,width=16, text="Pressão", anchor=CENTER,height=2,pady=0, padx=0, relief="groove", font=('Ivy 15 bold'), bg=cor2, fg=cor1)
l_unidade.place(x=0, y=0)
l_de = Label(frame_esquerda,text="De", anchor=NW,height=1,pady=0, padx=3, relief="groove", font=('Ivy 10 bold'), bg=cor2, fg=cor1)
l_de.place(x=10, y=70)
c_de = ttk.Combobox(frame_esquerda, width=5,justify='center', font=('Ivy 8 bold'))
c_de.place(x=38, y=70)
l_para = Label(frame_esquerda, text="Para", anchor=NW,height=1,pady=0, padx=3, relief="groove", font=('Ivy 10 bold'), bg=cor2, fg=cor1)
l_para.place(x=100, y=70)
c_para = ttk.Combobox(frame_esquerda, width=5, justify='center',font=('Ivy 8 bold'))
c_para.place(x=140, y=70)
Agora que terminamos o design, criaremos um dicionário para exibir os valores das unidades, portanto, teremos
unidades = {'peso':[{'kg':1000},{'hg':100},{'dag':10},{'g':1},{'dg':0.1},{'cg':0.01},{'mg':0.001}],
'comprimento':[{'km':1000},{'hm':100},{'dam':10},{'m':1},{'dm':0.1},{'cm':0.01},{'mm':0.001}]}
Coloque este dicionário sobre o frame cima, onde comentamos. ( #------------ Frame Direita ----------------
)
Ok, agora vamos criar uma função, e dentro dessa função vamos criar a lógica da nossa calculadora.
def mostrar_menu(i):
print("Oi")
O que faremos agora é atribuir os valores do dicionário de unidades em nosso Combobox.
def mostrar_menu(i):
unidade_de = []
unidade_para = []
unidade_valores = []
for j in unidades[i]:
for k, v in j.items():
unidade_de.append(k)
unidade_para.append(k)
unidade_valores.append(v)
c_de ['values'] = (unidade_de)
c_para['values'] = (unidade_para)
Agora, para verificar, devemos executar a função e, para isso, faremos o seguinte
Vá para um dos botões de unidades que criamos no frame direita, e passe o seguinte como um atributo:
command=lambda: mostrar_menu('peso'),
E faça o mesmo para os outros botões de unidades
.
E dentro da função, adicionando este código:
# alterar o valor do Label para mostrar o nome da unidade a ser calculada
l_unidade['text'] = i
Agora vamos criar alguns Labels e entradas dentro da função que nos mostra o menu:
#------------ Label, botao, entries dentro da funcao
l_info = Label(frame_esquerda,width=21, text="Digite o número abaixo ", anchor=CENTER,height=1,pady=3, padx=5, relief="flat", font=('Ivy 10 bold'), bg=cor2, fg=cor1)
l_info.place(x=0, y=110)
e_numero = Entry(frame_esquerda, width=9, font=('Ivy 15 bold'),justify='center',relief=SOLID)
e_numero.place(x=10, y=150)
b_calcular = Button(frame_esquerda,text="Calcular", width=8, height=1, bg=cor4, fg=cor1,font=('Ivy 10 bold'), relief=RAISED, overrelief=RIDGE)
b_calcular.place(x=115, y=150)
l_resultado = Label(frame_esquerda,width=11, anchor=CENTER,height=1,pady=0, padx=4, relief="groove", font=('Ivy 18 bold'), bg=cor2, fg=cor1)
l_resultado.place(x=10, y=200)
Agora vamos criar a função que nos permitirá converter entre unidades.
#---- Funcao para fazer a conversao
def calcular():
print(oi)
Primeiro, devemos obter o número que gostaríamos de converter e também a unidade para a qual queremos converter, bem como a unidade atual desse mesmo número.
#---- Funcao para fazer a conversao
def calcular():
# Obtendo as unidades
a = c_de.get()
b = c_para.get()
# Obtendo o numero
numero_para_converter = float(e_numero.get())
Agora que temos os dados de que precisamos, é importante saber a fórmula para converter unidades.
Vamos aplicar esta fórmula e criar uma lógica que nos permitirá converter entre unidades para que tenhamos.
def calcular():
# Obtendo as unidades
a = c_de.get()
b = c_para.get()
# Obtendo o numero
numero_para_converter = float(e_numero.get())
dist=unidade_para.index(b) - unidade_de.index(a)
# verificando a posicao das unidades ( Se vem da direita para esquerda para determinar a operacao ( Multiplicacao ))
if unidade_para.index(a) <= unidade_de.index(b):
# verificando a posicao das unidades para obter o valor de distancia
if unidade_para.index(a) <= unidade_de.index(b):
# Obtendo o valor de distancia entre as unidades para ser utilizade como expoente
distancia = unidade_de.index(b) - unidade_para.index(a)
resultado = numero_para_converter *(10**distancia)
print(resultado)
else:
# Obtendo o valor de distancia entre as unidades para ser utilizade como expoente
distancia = unidade_de.index(a) - unidade_para.index(b)
resultado = numero_para_converter *(10**distancia)
print(resultado)
# verificando a posicao das unidades ( Se vem da direita para esquerda para determinar a operacao ( Divisao ))
if unidade_para.index(a) > unidade_de.index(b):
# verificando a posicao das unidades para obter o valor de distancia
if unidade_para.index(a) <= unidade_de.index(b):
# Obtendo o valor de distancia entre as unidades para ser utilizade como expoente
distancia = unidade_de.index(b) - unidade_para.index(a)
resultado = numero_para_converter /(10**distancia)
print(resultado)
else:
# Obtendo o valor de distancia entre as unidades para ser utilizade como expoente
distancia = unidade_de.index(a) - unidade_para.index(b)
resultado = numero_para_converter /(10**distancia)
print(resultado)
Agora que criamos a lógica para a conversão, vamos agora exibir o resultado na tela em vez de imprimi-lo no console.
# mostrando resultado
l_resultado['text'] = str(resultado) + ' ' + str(unidade_para[unidade_para.index(b)])
e_numero.delete(0, END)
Ok, agora para as unidades restantes, vamos simplesmente seguir a mesma lógica.
Assim que finalizamos nosso aplicativo, agora tente modificá-lo como quiser e também tente adicionar novos recursos a ele.
Qualquer dúvida, deixe nos comentários vou ajudar
from tkinter import *
from tkinter import ttk
#------------- importando o PILLOW --------------
from PIL import ImageTk, Image
#------------- cores --------------
cor1 = "#3b3b3b" # black / preta
cor2 = "#FFFFFF" # white / branca
cor3 = "#3498DB" # blue / Azul
cor4 = "#fcc058" # orange / larange
janela = Tk()
janela.title('')
janela.geometry('650x260')
janela.configure(bg=cor1)
janela.resizable(width=FALSE, height=FALSE)
#------------- Frames -------------
frame_cima = Frame(janela, width=450, height=50,bg=cor2, pady=0, padx=3, relief="flat",)
frame_cima.place(x=2, y=2)
frame_direita = Frame(janela, width=450, height=220,bg=cor2, pady=0, padx=3, relief="flat",)
frame_direita.place(x=2, y=54)
frame_esquerda = Frame(janela, width=198, height=260,bg=cor2, pady=0, padx=0, relief="flat",)
frame_esquerda.place(x=454, y=2)
#------------ aplicando estilo ----------------
style = ttk.Style(janela)
style.theme_use("clam")
#------------ Frame cima ----------------
l_app_nome = Label(frame_cima, text="Calculadora de Unidades de Medidas", height=1, padx=0, relief="flat", anchor="center", font=('Ivy 15 bold'), bg=cor2, fg=cor3)
l_app_nome.place(x=50, y=10)
unidades = {'Peso':[{'kg':1000},{'hg':100},{'dag':10},{'g':1},{'dg':0.1},{'cg':0.01},{'mg':0.001}],
'Comprimento':[{'km':1000},{'hm':100},{'dam':10},{'m':1},{'dm':0.1},{'cm':0.01},{'mm':0.001}]}
def mostrar_menu(i):
# alterar o valor do Label para mostrar o nome da unidade a ser calculada
l_unidade['text'] = i
unidade_de = []
unidade_para = []
unidade_valores = []
for j in unidades[i]:
for k, v in j.items():
unidade_de.append(k)
unidade_para.append(k)
unidade_valores.append(v)
c_de ['values'] = (unidade_de)
c_para['values'] = (unidade_para)
#---- Funcao para fazer a conversao
def calcular():
# Obtendo as unidades
a = c_de.get()
b = c_para.get()
# Obtendo o numero
numero_para_converter = float(e_numero.get())
dist=unidade_para.index(b) - unidade_de.index(a)
# verificando a posicao das unidades ( Se vem da direita para esquerda para determinar a operacao ( Multiplicacao ))
if unidade_para.index(a) <= unidade_de.index(b):
# verificando a posicao das unidades para obter o valor de distancia
if unidade_para.index(a) <= unidade_de.index(b):
# Obtendo o valor de distancia entre as unidades para ser utilizade como expoente
distancia = unidade_de.index(b) - unidade_para.index(a)
resultado = numero_para_converter *(10**distancia)
# mostrando resultado
l_resultado['text'] = str(resultado) + ' ' + str(unidade_para[unidade_para.index(b)])
e_numero.delete(0, END)
else:
# Obtendo o valor de distancia entre as unidades para ser utilizade como expoente
distancia = unidade_de.index(a) - unidade_para.index(b)
resultado = numero_para_converter *(10**distancia)
# mostrando resultado
l_resultado['text'] = str(resultado) + ' ' + str(unidade_para[unidade_para.index(b)])
e_numero.delete(0, END)
# verificando a posicao das unidades ( Se vem da direita para esquerda para determinar a operacao ( Divisao ))
if unidade_para.index(a) > unidade_de.index(b):
# verificando a posicao das unidades para obter o valor de distancia
if unidade_para.index(a) <= unidade_de.index(b):
# Obtendo o valor de distancia entre as unidades para ser utilizade como expoente
distancia = unidade_de.index(b) - unidade_para.index(a)
resultado = numero_para_converter /(10**distancia)
# mostrando resultado
l_resultado['text'] = str(resultado) + ' ' + str(unidade_para[unidade_para.index(b)])
e_numero.delete(0, END)
else:
# Obtendo o valor de distancia entre as unidades para ser utilizade como expoente
distancia = unidade_de.index(a) - unidade_para.index(b)
resultado = numero_para_converter /(10**distancia)
# mostrando resultado
l_resultado['text'] = str(resultado) + ' ' + str(unidade_para[unidade_para.index(b)])
e_numero.delete(0, END)
#------------ Label, botao, entries dentro da funcao
l_info = Label(frame_esquerda,width=21, text="Digite o número abaixo ", anchor=CENTER,height=1,pady=3, padx=5, relief="flat", font=('Ivy 10 bold'), bg=cor2, fg=cor1)
l_info.place(x=0, y=110)
e_numero = Entry(frame_esquerda, width=9, font=('Ivy 15 bold'),justify='center',relief=SOLID)
e_numero.place(x=10, y=150)
b_calcular = Button(frame_esquerda,command=calcular, text="Calcular", width=8, height=1, bg=cor4, fg=cor1,font=('Ivy 10 bold'), relief=RAISED, overrelief=RIDGE)
b_calcular.place(x=115, y=150)
l_resultado = Label(frame_esquerda,width=11, anchor=CENTER,height=1,pady=0, padx=4, relief="groove", font=('Ivy 18 bold'), bg=cor2, fg=cor1)
l_resultado.place(x=10, y=200)
#------------ Frame Direita ----------------
# botao e imagem para Peso
img_0 = Image.open('images/weight.png')
img_0 = img_0.resize((50, 50), Image.ANTIALIAS)
img_0 = ImageTk.PhotoImage(img_0)
b_0 = Button(frame_direita, command=lambda: mostrar_menu('Peso'), text="Peso",width=130, height=50, image=img_0, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_0.grid(row=0, column=0, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Tempo
img_1 = Image.open('images/time.png')
img_1 = img_1.resize((50, 50), Image.ANTIALIAS)
img_1 = ImageTk.PhotoImage(img_1)
b_1 = Button(frame_direita, text="Tempo",width=130, height=50, image=img_1, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_1.grid(row=0, column=1, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Comprimento
img_2 = Image.open('images/length.png')
img_2 = img_2.resize((45, 45), Image.ANTIALIAS)
img_2 = ImageTk.PhotoImage(img_2)
b_2 = Button(frame_direita, command=lambda: mostrar_menu('Comprimento'), text="Comprimento",width=130, height=50, image=img_2, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_2.grid(row=0, column=2, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Área
img_3 = Image.open('images/square.png')
img_3 = img_3.resize((50, 50), Image.ANTIALIAS)
img_3 = ImageTk.PhotoImage(img_3)
b_3 = Button(frame_direita, text="Área",width=130, height=50, image=img_3, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_3.grid(row=1, column=0, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Quantidade
img_4 = Image.open('images/volume.png')
img_4 = img_4.resize((50, 50), Image.ANTIALIAS)
img_4 = ImageTk.PhotoImage(img_4)
b_4 = Button(frame_direita, text="Quantidade",width=130, height=50, image=img_4, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_4.grid(row=1, column=1, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Velocidade
img_5 = Image.open('images/speed.png')
img_5 = img_5.resize((50, 50), Image.ANTIALIAS)
img_5 = ImageTk.PhotoImage(img_5)
b_5 = Button(frame_direita, text="Velocidade",width=130, height=50, image=img_5, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_5.grid(row=1, column=2, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Temperatura
img_6 = Image.open('images/temperature.png')
img_6 = img_6.resize((50, 50), Image.ANTIALIAS)
img_6 = ImageTk.PhotoImage(img_6)
b_6 = Button(frame_direita, text="Temperatura ",width=130, height=50, image=img_6, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_6.grid(row=2, column=0, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Energia
img_7 = Image.open('images/energy.png')
img_7 = img_7.resize((50, 50), Image.ANTIALIAS)
img_7 = ImageTk.PhotoImage(img_7)
b_7 = Button(frame_direita, text="Energia",width=130, height=50, image=img_7, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_7.grid(row=2, column=1, sticky=NSEW, pady=5, padx=5)
# botao e imagem para Pressão
img_8 = Image.open('images/pressure.png')
img_8 = img_8.resize((50, 50), Image.ANTIALIAS)
img_8 = ImageTk.PhotoImage(img_8)
b_8 = Button(frame_direita, text="Pressão",width=130, height=50, image=img_8, compound=LEFT, anchor="nw", relief=FLAT, overrelief=SOLID, bg=cor3, fg=cor2, font=('Ivy 10 bold') )
b_8.grid(row=2, column=2, sticky=NSEW, pady=5, padx=5)
#------------ Frame Esquerda ----------------
l_unidade = Label(frame_esquerda,width=16, text="----", anchor=CENTER,height=2,pady=0, padx=0, relief="groove", font=('Ivy 15 bold'), bg=cor2, fg=cor1)
l_unidade.place(x=0, y=0)
l_de = Label(frame_esquerda,text="De", anchor=NW,height=1,pady=0, padx=3, relief="groove", font=('Ivy 10 bold'), bg=cor2, fg=cor1)
l_de.place(x=10, y=70)
c_de = ttk.Combobox(frame_esquerda, width=5,justify='center', font=('Ivy 8 bold'))
c_de.place(x=38, y=70)
l_para = Label(frame_esquerda, text="Para", anchor=NW,height=1,pady=0, padx=3, relief="groove", font=('Ivy 10 bold'), bg=cor2, fg=cor1)
l_para.place(x=100, y=70)
c_para = ttk.Combobox(frame_esquerda, width=5, justify='center',font=('Ivy 8 bold'))
c_para.place(x=140, y=70)
janela.mainloop()
Ok, agora para as unidades restantes, vamos simplesmente seguir a mesma lógica.
Assim que finalizamos nosso aplicativo, agora tente modificá-lo como quiser e também tente adicionar novos recursos a ele.
Qualquer dúvida, deixe nos comentários vou ajudar
0 Comentários