Boa tarde! A situação é que na interface gráfica lista_viagens( ) funciona, mas não aparecem os dados que cadastro e salvo como CSV. Criei a função listar( ) que está listando normalmente, só não consigo fazer a lista aparecer na tabela da interface "Lista de viagens". Como posso fazer para que as informações cadastradas apareçam na tela "Lista de viagens"?
import PySimpleGUI as sg
import os
import csv
cwd = os.getcwd()
print("Current working directory is:", cwd)
#============================== Persistência ======================================
def grava_dados(viagens):
arquivo = open('viagens.csv', 'a+')
municipio = viagens['municipio']
estado = viagens['estado']
atividades = viagens['atividades']
arquivo.write(municipio + ", " + estado + ", " + atividades + "\n")
print('GRAVOU O ARQUIVO')
arquivo.close()
#============================== Tela inicial ======================================
def tela_inicial():
sg.theme('DarkTeal3')
layout = [
[sg.Text("Cadastro de viagens", font="Arial 16 bold", pad=(25, 30))],
[sg.Button("Cadastro", key="cadastro", size=(40, 2))],
[sg.Button("Consulta", key="consulta", size=(40, 2))]
]
janela = sg.Window("Tela inicial", layout, text_justification="center")
botao, valores = janela.read()
janela.close()
return botao
# tela_inicial()
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~CADASTRO~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def cadastra():
sg.theme('DarkTeal3')
layout = [
[sg.Text("Cadastre sua viagem!", font=("Arial 16 bold"), pad=(20, 30))],
[sg.Text("Município", size=(10,1)), sg.Input(key="municipio", size =(40, 1))],
[sg.Text("Estado", size=(10,1)), sg.Input(key="estado", size =(40, 1))],
[sg.Text("Atividades", size=(10,1)), sg.Input(key="atividades", size =(40, 1))],
[sg.Button("Cadastrar", key = "cadastrar", size=(23, 2)), sg.Button("Voltar", key = "voltar", size=(24,2))]
]
janela = sg.Window("Cadastro", layout)
botao, valores = janela.read()
janela.close()
if botao == 'cadastrar':
grava_dados(valores)
elif botao == 'voltar':
tela_inicial()
# cadastra()
#~~~~~~~~~~~~~~~~~~~~~~~~~~~tabela~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def lista_viagens():
sg.theme('DarkTeal3')
layout = [
[sg.Text("Lista de viagens", font=("Arial 16 bold"), pad=(20, 30))],
[sg.Table([['municipio', 'estado', 'atividades']], num_rows=3)],
[sg.Button("Voltar", key="voltar", size=(24, 2))]
]
janela = sg.Window("Lista de viagens", layout)
botao, valores = janela.read()
janela.close()
if botao == 'voltar':
tela_inicial()
def listar():
with open('viagens.csv', encoding='utf-8') as arquivo_referencia:
# 2. ler a tabela
tabela = csv.reader(arquivo_referencia, delimiter=',')
print('entrei')
# 3. navegar pela tabela
for l in tabela:
municipio = l[0]
estado = l[1]
ativ = l[2]
print(municipio, estado, ativ)
# lista_viagens()
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Buttons come to life~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def main():
sg.theme('DarkTeal3') #Define um tema para o PySimpleGUI
while True:
opcao = tela_inicial()
try:
match opcao:
case 'cadastro': # Inclui
cadastra()
case 'consulta':
lista_viagens()
listar()
case _:
grava_dados()#quando adciono isso consigo fechar a tela_inicial
break
except SystemExit: # Garante que caso uma janela seja fechada, os dados ainda serão gravados no arquivo
exit() #Fecha o programa pythons
main()