from tkinter import *
import re
#Versão funcional usando heurísticas.
root = Tk()
root.geometry("700x250")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Classificar palavras pela sílaba tónica")
titulo = Label(text="Classificar palavras pela sílaba tónica",
font=("Arial", 26, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.05)
texto_sub1 = Label(text="Palavra:",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.2, rely=0.32)
Palavra = StringVar()
Palavra_entrada = Entry(textvariable=Palavra,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Palavra_entrada.place(relx=0.45, rely=0.33, relwidth=0.35)
def limpar():
Palavra_entrada.delete(0, END)
resultado_texto.config(text="")
def app():
palavra = Palavra.get().lower()
if not palavra:
resultado_texto.config(text="Digite uma palavra")
return
# Caso com acento
if re.search(r'[áéíóúâêôãõà]', palavra):
for i, letra in enumerate(palavra):
if letra in 'áéíóúâêôãõà':
pos = i
break
vogais = [i for i, l in enumerate(palavra) if l in 'aeiouáéíóúâêôãõà']
silaba_tonica = len([v for v in vogais if v <= pos])
if silaba_tonica == len(vogais):
resultado_texto.config(text="Palavra é oxítona (aguda)")
elif silaba_tonica == len(vogais) - 1:
resultado_texto.config(text="Palavra é paroxítona (grave)")
else:
resultado_texto.config(text="Palavra é proparoxítona (esdrúxula)")
# Sem acento (heurística)
else:
if palavra.endswith(('a', 'e', 'o', 'as', 'es', 'os', 'am', 'em', 'ens')):
resultado_texto.config(text="Palavra é paroxítona (grave)")
else:
resultado_texto.config(text="Palavra é oxítona (aguda)")
but1 = Button(text="Classificar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.5, relwidth=0.25, relheight=0.15)
but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.5, relwidth=0.25, relheight=0.15)
but_sair = Button(text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7, rely=0.5, relwidth=0.25, relheight=0.15)
resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.7, relwidth=0.9, relheight=0.2)
Palavra_entrada.focus()
root.mainloop()