localizar o Telefone (usando Tkinter)

from tkinter import *
import phonenumbers
from phonenumbers import geocoder
root=Tk()
root.geometry("400x250")
root.configure(bg="#abcdef")
root.resizable(0,0)
def app():
ntelemovel = telefone.get()
a = str('+')+ntelemovel
numero = phonenumbers.parse(a)
b =geocoder.description_for_number(numero, 'en')
resultado.set(b)
titulo = Label(text="Localizar telefone",bg="#abcdef",fg="#ba990a",
font=("Arial","14","bold"))
titulo.place(relx=0.3,rely=0.05)
numerotelefone = Label(text="Número de Telefone",bg="#abcdef",fg="#ba990a",
font=("Arial","12","bold"))
numerotelefone.place(relx=0.05,rely=0.35)
telefone = StringVar()
telefone_entrada= Entry(textvariable=telefone,font=("Arial","12","bold"),
bg="white",fg="red",justify='center')
telefone_entrada.place(relx=0.48,rely=0.35,relwidth=0.35)

but = Button( text="Localizar", bd=2, bg='#107db2', fg='white',
font=('verdana', 14, 'bold'),command=app)
but.place(relx=0.35, rely=0.5, relwidth=0.3, relheight=0.15)
resultado = StringVar()
resulatdoresultado =Label(textvariable=resultado,font=("Arial",12,"bold"),bg="#f0f8ff")
resulatdoresultado.place(relx=0.3,rely=0.75,relwidth=0.4)
root.mainloop()

# Versão melhorada:


from tkinter import *
import phonenumbers
from phonenumbers import geocoder, NumberParseException

root = Tk()
root.geometry("600x500")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Localizar telefone")

titulo = Label(text="Localizar telefone",
font=("Arial", "38", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.15, rely=0.05)

texto_sub1 = Label(text="Região (ex: BR, PT) :",
font=("Arial", "18 ", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.15, rely=0.26)

texto_sub2 = Label(text="Número de telefone :",
font=("Arial", "18 ", "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.15, rely=0.40)

sigla1 = StringVar()
sigla1_entrada = Entry(textvariable=sigla1,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
sigla1_entrada.place(relx=0.6, rely=0.27, relwidth=0.3)

telefone = StringVar()
telefone_entrada = Entry(textvariable=telefone,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
telefone_entrada.place(relx=0.6, rely=0.41, relwidth=0.3)

# Dicionário de siglas de países para idiomas (expandido)
country_to_lang = {
'AF': 'fa', 'AL': 'sq', 'DZ': 'ar', 'AS': 'en', 'AD': 'ca', 'AO': 'pt', 'AI': 'en', 'AG': 'en', 'AR': 'es',
'AM': 'hy', 'AW': 'nl', 'AU': 'en', 'AT': 'de', 'AZ': 'az', 'BS': 'en', 'BH': 'ar', 'BD': 'bn', 'BB': 'en',
'BY': 'be', 'BE': 'nl', 'BZ': 'en', 'BJ': 'fr', 'BM': 'en', 'BT': 'dz', 'BO': 'es', 'BA': 'bs', 'BW': 'en',
'BR': 'pt', 'IO': 'en', 'BN': 'ms', 'BG': 'bg', 'BF': 'fr', 'BI': 'fr', 'KH': 'km', 'CM': 'fr', 'CA': 'en',
'CV': 'pt', 'KY': 'en', 'CF': 'fr', 'TD': 'fr', 'CL': 'es', 'CN': 'zh', 'CO': 'es', 'KM': 'ar', 'CG': 'fr',
'CD': 'fr', 'CR': 'es', 'HR': 'hr', 'CU': 'es', 'CY': 'el', 'CZ': 'cs', 'DK': 'da', 'DJ': 'fr', 'DM': 'en',
'DO': 'es', 'EC': 'es', 'EG': 'ar', 'SV': 'es', 'GQ': 'es', 'ER': 'ti', 'EE': 'et', 'ET': 'am', 'FJ': 'en',
'FI': 'fi', 'FR': 'fr', 'GA': 'fr', 'GM': 'en', 'GE': 'ka', 'DE': 'de', 'GH': 'en', 'GR': 'el', 'GD': 'en',
'GU': 'en', 'GT': 'es', 'GN': 'fr', 'GW': 'pt', 'GY': 'en', 'HT': 'fr', 'HN': 'es', 'HK': 'zh', 'HU': 'hu',
'IS': 'is', 'IN': 'hi', 'ID': 'id', 'IR': 'fa', 'IQ': 'ar', 'IE': 'en', 'IL': 'he', 'IT': 'it', 'JM': 'en',
'JP': 'ja', 'JO': 'ar', 'KZ': 'kk', 'KE': 'sw', 'KI': 'en', 'KP': 'ko', 'KR': 'ko', 'KW': 'ar', 'KG': 'ky',
'LA': 'lo', 'LV': 'lv', 'LB': 'ar', 'LS': 'en', 'LR': 'en', 'LY': 'ar', 'LI': 'de', 'LT': 'lt', 'LU': 'lb',
'MO': 'zh', 'MK': 'mk', 'MG': 'mg', 'MW': 'en', 'MY': 'ms', 'MV': 'dv', 'ML': 'fr', 'MT': 'mt', 'MH': 'en',
'MR': 'ar', 'MU': 'en', 'MX': 'es', 'FM': 'en', 'MD': 'ro', 'MC': 'fr', 'MN': 'mn', 'ME': 'sr', 'MS': 'en',
'MA': 'ar', 'MZ': 'pt', 'MM': 'my', 'NA': 'en', 'NR': 'en', 'NP': 'ne', 'NL': 'nl', 'NZ': 'en', 'NI': 'es',
'NE': 'fr', 'NG': 'en', 'NO': 'no', 'OM': 'ar', 'PK': 'ur', 'PW': 'en', 'PS': 'ar', 'PA': 'es', 'PG': 'en',
'PY': 'es', 'PE': 'es', 'PH': 'tl', 'PL': 'pl', 'PT': 'pt', 'PR': 'es', 'QA': 'ar', 'RO': 'ro', 'RU': 'ru',
'RW': 'rw', 'KN': 'en', 'LC': 'en', 'VC': 'en', 'WS': 'en', 'SM': 'it', 'ST': 'pt', 'SA': 'ar', 'SN': 'fr',
'RS': 'sr', 'SC': 'fr', 'SL': 'en', 'SG': 'en', 'SK': 'sk', 'SI': 'sl', 'SB': 'en', 'SO': 'so', 'ZA': 'en',
'SS': 'en', 'ES': 'es', 'LK': 'si', 'SD': 'ar', 'SR': 'nl', 'SZ': 'en', 'SE': 'sv', 'CH': 'de', 'SY': 'ar',
'TW': 'zh', 'TJ': 'tg', 'TZ': 'sw', 'TH': 'th', 'TL': 'pt', 'TG': 'fr', 'TO': 'en', 'TT': 'en', 'TN': 'ar',
'TR': 'tr', 'TM': 'tk', 'UG': 'en', 'UA': 'uk', 'AE': 'ar', 'GB': 'en', 'US': 'en', 'UY': 'es', 'UZ': 'uz',
'VU': 'bi', 'VE': 'es', 'VN': 'vi', 'YE': 'ar', 'ZM': 'en', 'ZW': 'en'
}

def limpar():
sigla1_entrada.delete(0, END)
telefone_entrada.delete(0, END)
resultado_texto.config(text="")

def app():
try:
tele = telefone.get()
s1 = sigla1.get().upper() # Garantir que a sigla esteja em maiúsculas

# Verifica se a sigla de país está no dicionário
if s1 in country_to_lang:
lang = country_to_lang[s1]
telefone_formulario_ajustado = phonenumbers.parse(tele, s1)

telefone_formatado = phonenumbers.format_number(telefone_formulario_ajustado,
phonenumbers.PhoneNumberFormat.NATIONAL)
telefone_internacional = phonenumbers.format_number(telefone_formulario_ajustado, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
b = geocoder.description_for_number(telefone_formulario_ajustado, lang)

resultado = f"Formato Nacional: {telefone_formatado}\nFormato Internacional: {telefone_internacional}\nDescrição: {b}"
resultado_texto.config(text=resultado)
else:
resultado_texto.config(text="Sigla de país não suportada")

except NumberParseException as e:
resultado_texto.config(text=f"Erro ao analisar o número de telefone: {e}")

except ValueError:
resultado_texto.config(text="Erro de Digitação")

but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.65, relwidth=0.25, relheight=0.1)

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.65, relwidth=0.25, relheight=0.1)

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.65, relwidth=0.25, relheight=0.1)

resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.15)

root.mainloop()

Comentários

  1. Pra mim não funcionou!
    Alterei o país para pt-br, mas não recebi retorno algum do sistema.

    ResponderEliminar
  2. A parte correcta para o Brasil seria algo:
    import phonenumbers
    from phonenumbers import geocoder, NumberParseException

    telefone_formulario = "21999999999"

    try:
    # Ajustando o número de telefone com a região BR (Brasil)
    telefone_formulario_ajustado = phonenumbers.parse(telefone_formulario, "BR")

    # Formatação nacional e internacional
    telefone_formatado = phonenumbers.format_number(telefone_formulario_ajustado, phonenumbers.PhoneNumberFormat.NATIONAL)
    telefone_internacional = phonenumbers.format_number(telefone_formulario_ajustado, phonenumbers.PhoneNumberFormat.INTERNATIONAL)

    print("Formato Nacional:", telefone_formatado)
    print("Formato Internacional:", telefone_internacional)

    # Obter descrição do número
    b = geocoder.description_for_number(telefone_formulario_ajustado, 'pt')
    print("Descrição:", b)

    except NumberParseException as e:
    print(f"Erro ao analisar o número de telefone: {e}")

    ResponderEliminar

Enviar um comentário

Mensagens populares deste blogue

Criar Cartões de Visita

12 signos egípcios

Calcular a percentagem de ocupação