Mundo em Python

Comparação de Patentes nas Forças de Segurança

from tkinter import *

root = Tk()
root.geometry("800x600")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Comparação de Patentes nas Forças de Segurança") # Título
Label(root,
text="Comparação de Patentes nas Forças de Segurança",
font=("Arial", 24, "bold"),
bg="#103030",
fg="#49e3e3").pack(pady=20) # Lista de forças
dropDownList = [
"Polícia de Segurança Pública",
"Corpo da Guarda Prisional",
"Polícia Marítima",
"Guarda Nacional Republicana"
] # Dicionário de patentes
patentes_dict = {
"Polícia de Segurança Pública": [
"Comissário", "Subcomissário", "Intendente", "Subintendente", "Superintendente",
"Inspector-chefe", "Inspector principal", "Inspector", "Subinspector",
"Agente", "Agente estagiário"
],
"Corpo da Guarda Prisional": [
"Oficial Superior", "Oficial Executivo", "Oficial Operacional",
"Sargento-Chefe", "Sargento", "Cabo",
"Guarda Prisional"
],
"Polícia Marítima": [
"Capitão-Tenente", "Capitão de Fragata", "Capitão de Mar e Guerra",
"Primeiro-sargento", "Segundo-sargento", "Cabo", "Marinheiro"
],
"Guarda Nacional Republicana": [
"Coronel", "Tenente-coronel", "Major", "Capitão", "Tenente", "Alferes",
"Sargento-Chefe", "Sargento", "Cabo", "Guarda"
]
} # Frame para os dropdowns
frame_opts = Frame(root, bg="#103030")
frame_opts.pack(pady=10) # Primeiro dropdown
var1 = StringVar(value=dropDownList[0])
Label(frame_opts, text="Força 1:", font=("Arial", 14), bg="#103030", fg="#49e3e3").grid(row=0, column=0, padx=5)
opt1 = OptionMenu(frame_opts, var1, *dropDownList)
opt1.config(font=("Arial", 12), bg="#09A3BA", fg="#FFFFFF")
opt1["menu"].config(font=("Arial", 12), bg="#09A3BA", fg="#FFFFFF")
opt1.grid(row=0, column=1, padx=5) # Segundo dropdown
var2 = StringVar(value=dropDownList[1])
Label(frame_opts, text="Força 2:", font=("Arial", 14), bg="#103030", fg="#49e3e3").grid(row=0, column=2, padx=20)
opt2 = OptionMenu(frame_opts, var2, *dropDownList)
opt2.config(font=("Arial", 12), bg="#09A3BA", fg="#FFFFFF")
opt2["menu"].config(font=("Arial", 12), bg="#09A3BA", fg="#FFFFFF")
opt2.grid(row=0, column=3, padx=5) # Label para exibir o resultado
resultado = Label(root,
text="",
font=("Courier", 12),
bg="#cfe2f3",
justify=LEFT,
anchor="nw")
resultado.place(relx=0.05, rely=0.25, relwidth=0.9, relheight=0.7) # Função que formata e atualiza a comparação
def atualizar_comparacao(*args):
p1 = patentes_dict[var1.get()]
p2 = patentes_dict[var2.get()]
# determina quantas linhas teremos (max das duas listas)
linhas = max(len(p1), len(p2))
coluna1 = var1.get()[:30].ljust(30)
coluna2 = var2.get()[:30].ljust(30)
header = f"{coluna1} | {coluna2}\n"
header += "-" * 65 + "\n"
body = ""
for i in range(linhas):
v1 = p1[i] if i < len(p1) else ""
v2 = p2[i] if i < len(p2) else ""
body += f"{v1.ljust(30)} | {v2.ljust(30)}\n"
resultado.config(text=header + body) var1.trace_add('write', atualizar_comparacao)
var2.trace_add('write', atualizar_comparacao) atualizar_comparacao() root.mainloop()
0