Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- import PySimpleGUI as sg
- import webbrowser
- import pyperclip
- def cadastrar_senha(site, url, login, senha):
- # Abrir o arquivo CSV no modo de escrita
- with open('senhas.csv', 'a', newline='') as file:
- writer = csv.writer(file)
- writer.writerow([site, url, login, senha])
- def visualizar_senhas():
- # Ler as senhas do arquivo CSV
- senhas = []
- with open('senhas.csv', 'r') as file:
- reader = csv.reader(file)
- for row in reader:
- senhas.append(row)
- # Função para copiar login para área de transferência
- def copy_login(row_index):
- login = senhas[row_index][2]
- pyperclip.copy(login)
- sg.popup_timed("Login copiado para a área de transferência", keep_on_top=True, auto_close_duration=2)
- # Função para copiar senha para área de transferência
- def copy_senha(row_index):
- senha = senhas[row_index][3]
- pyperclip.copy(senha)
- sg.popup_timed("Senha copiada para a área de transferência", keep_on_top=True, auto_close_duration=2)
- # Layout da janela de visualização
- layout = [
- [sg.Table(values=senhas, headings=["Nome do Site", "URL do Site", "Login", "Senha"], justification="left", num_rows=20, col_widths=[30, 40, 20, 20], key="-TABLE-", enable_events=True, right_click_menu=['', ['CopyLogin', 'CopySenha']])],
- [sg.Button("Abrir URL"), sg.Button("Editar"), sg.Button("Excluir")]
- ]
- window = sg.Window("Visualizar Senhas", layout, finalize=True)
- while True:
- event, values = window.read()
- if event == sg.WINDOW_CLOSED:
- break
- if event == "Abrir URL":
- selected_rows = values["-TABLE-"]
- if len(selected_rows) > 0:
- row_index = selected_rows[0]
- url = senhas[row_index][1] # Índice 1 corresponde à coluna da URL
- # Abrir o navegador padrão com a URL clicada
- webbrowser.open(url)
- if event == "Editar":
- selected_rows = values["-TABLE-"]
- if len(selected_rows) > 0:
- row_index = selected_rows[0]
- site = senhas[row_index][0]
- url = senhas[row_index][1]
- login = senhas[row_index][2]
- senha = senhas[row_index][3]
- # Abrir janela de edição com os valores preenchidos
- layout_edicao = [
- [sg.Text("Nome do Site")],
- [sg.InputText(site, key="-EDIT_SITE-", focus=True)],
- [sg.Text("URL do Site")],
- [sg.InputText(url, key="-EDIT_URL-")],
- [sg.Text("Login")],
- [sg.InputText(login, key="-EDIT_LOGIN-")],
- [sg.Text("Senha")],
- [sg.InputText(senha, key="-EDIT_SENHA-", password_char="*")],
- [sg.Button("Salvar")]
- ]
- window_edicao = sg.Window("Editar Senha", layout_edicao)
- while True:
- event_edicao, values_edicao = window_edicao.read()
- if event_edicao == sg.WINDOW_CLOSED:
- break
- if event_edicao == "Salvar":
- site = values_edicao["-EDIT_SITE-"]
- url = values_edicao["-EDIT_URL-"]
- login = values_edicao["-EDIT_LOGIN-"]
- senha = values_edicao["-EDIT_SENHA-"]
- # Atualizar a senha no arquivo CSV
- senhas[row_index] = [site, url, login, senha]
- with open('senhas.csv', 'w', newline='') as file:
- writer = csv.writer(file)
- writer.writerows(senhas)
- sg.popup("Senha atualizada com sucesso!")
- break
- window_edicao.close()
- if event == "Excluir":
- selected_rows = values["-TABLE-"]
- if len(selected_rows) > 0:
- row_index = selected_rows[0]
- result = sg.popup_yes_no("Deseja realmente excluir esta senha?", title="Excluir Senha")
- if result == "Yes":
- # Remover a senha do arquivo CSV
- del senhas[row_index]
- with open('senhas.csv', 'w', newline='') as file:
- writer = csv.writer(file)
- writer.writerows(senhas)
- sg.popup("Senha excluída com sucesso!")
- if event == "CopyLogin":
- selected_rows = values["-TABLE-"]
- if len(selected_rows) > 0:
- row_index = selected_rows[0]
- copy_login(row_index)
- if event == "CopySenha":
- selected_rows = values["-TABLE-"]
- if len(selected_rows) > 0:
- row_index = selected_rows[0]
- copy_senha(row_index)
- window.close()
- # Layout da janela de cadastro
- layout = [
- [sg.Text("Nome do Site")],
- [sg.InputText(key="-SITE-", focus=True)],
- [sg.Text("URL do Site")],
- [sg.InputText(key="-URL-")],
- [sg.Text("Login")],
- [sg.InputText(key="-LOGIN-")],
- [sg.Text("Senha")],
- [sg.InputText(key="-SENHA-", password_char="*")],
- [sg.Button("Cadastrar")],
- [sg.Button("Visualizar Senhas")]
- ]
- window = sg.Window("Gerenciador de Senhas", layout)
- while True:
- event, values = window.read()
- if event == sg.WINDOW_CLOSED:
- break
- if event == "Cadastrar":
- site = values["-SITE-"]
- url = values["-URL-"]
- login = values["-LOGIN-"]
- senha = values["-SENHA-"]
- cadastrar_senha(site, url, login, senha)
- # Limpar os campos de texto após cadastrar
- window["-SITE-"].update("")
- window["-URL-"].update("")
- window["-LOGIN-"].update("")
- window["-SENHA-"].update("")
- # Posicionar o cursor no campo "Nome do Site"
- window["-SITE-"].set_focus()
- if event == "Visualizar Senhas":
- visualizar_senhas()
- window.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement