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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_0.grid(row=0, column=0sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_0.grid(row=0, column=0sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_0.grid(row=0, column=0sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_0.grid(row=0, column=0sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_1.grid(row=0, column=1sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_2.grid(row=0, column=2sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_3.grid(row=1, column=0sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_4.grid(row=1, column=1sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_5.grid(row=1, column=2sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_6.grid(row=2, column=0sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_7.grid(row=2, column=1sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_8.grid(row=2, column=2sticky=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=11anchor=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=11anchor=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_0.grid(row=0, column=0sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_1.grid(row=0, column=1sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_2.grid(row=0, column=2sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_3.grid(row=1, column=0sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_4.grid(row=1, column=1sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_5.grid(row=1, column=2sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_6.grid(row=2, column=0sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_7.grid(row=2, column=1sticky=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=SOLIDbg=cor3, fg=cor2, font=('Ivy 10 bold') )

b_8.grid(row=2, column=2sticky=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