cadastro.py
from PySimpleGUI import PySimpleGUI as sg
import main
import pandas as pd
# Layout
sg.theme('Reddit')
layout = [
[sg.Text('Ticker: '), sg.Input(key='Ticker')],
[sg.Text('Quantidade de Papéis: '), sg.Input(key='Qtd_de_papeis')],
[sg.Text('Valor: '), sg.Input(key='Valor_pago')],
[sg.Text('Data:'), sg.Input(key='Data')],
[sg.Button('Adicionar')]
]
# Janela
window = sg.Window('Tela de Cadastro', layout)
# Ler os eventos
while True:
events, values = window.read()
if events == sg.WINDOW_CLOSED:
break
if events == 'Adicionar':
main.rows = values
df = pd.DataFrame(data=main.rows, index=[0], columns=main.columns)
print(df)
df.to_csv('dados/registro.csv', sep=';', mode = 'a')
main.py
import pandas as pd
"""
Criar a base de dados para armazenar as movimentações
"""
# Ticker, Qtd. de papéis, Valor pago, data; ok
# Valor aplicado(Qtd. de papéis * Valor pago);
# Preço Médio(Total aplicado/Qtd. papéis);
# Total aplicado(Somatório dos valores aplicados);
# Total papéis(Somatório das Qtd. de papéis);
# Proventos.
# Criando as colunas do DF
columns = ['Ticker', 'Qtd_de_papeis', 'Valor_pago', 'Data']
# Criando as linhas do DF
rows = {}
# Método para adicionar itens ao DF
# Criando o DF
df = pd.DataFrame(data=rows, index=[0], columns=columns)
"""
Criar função aporte
"""
# Ticker
# Qtd. de papéis
# Valor Pago
# Data
# Adicionar evento à base de movimentações
"""
Criar função Resgate
"""
# Ticker
# Qtd. de papéis
# Valor de Venda
# Data
# Adicionar evento à base de movimentações
"""
Calcular as variáveis a serem apresentadas
"""
# Preço Médio(Total aplicado/Qtd. papéis)
# Total aplicado(Somatório dos valores aplicados) ou(Valor Médio * Qtd. papéis)
# Total papéis(Somatório das Qtd. de papéis)
# Saldo Bruto(Total aplicado - (Total de papéis * Última cotação)
# Rentabilidade da aplicação(((Saldo Bruto / Total aplicado)*1oo)-100)
# Peso na Carteira((Saldo Bruto / Saldo Bruto da carteira)*100)
# Saldo Bruto da carteira(Somatório do Saldo Bruto)
# Rentabilidade Total da carteira(Saldo Bruto da carteira / Valor aplicado da carteira)*100
# Valor aplicado da carteira(Somatório do total aplicado)
"""
Situação atual da carteira
"""
# Saldo Bruto da carteira(Somatório do Saldo Bruto)
# Rentabilidade Total da carteira(Saldo Bruto da carteira / Valor aplicado da carteira)*100
# Valor aplicado da carteira(Somatório do total aplicado)
Como o código do cadastro.py consigo adicionar a linha ao arquivo .csv já existente. Porém toda vez que rodo o codigo, uma nova "tabela" é adicionada ao final do csv. Com o intuito de adicionar somente os valores do dicionário, ou seja, adicionar somente a linha com os values do dicionário, sem o nome das colunas, alterei meu código(abaixo) para obter listas com as chaves e os valores separados, para assim adicionar ao final da linha somente a lista com os valores, sem as chaves. O meu problema é que os valores adicionados ficam um em cada linha, mas quero deixá-los todos em uma única linha, como faço isso?
from PySimpleGUI import PySimpleGUI as sg
import pandas as pd
# Layout
sg.theme('Reddit')
layout = [
[sg.Text('Ticker: '), sg.Input(key='Ticker')],
[sg.Text('Quantidade de Papéis: '), sg.Input(key='Qtd_de_papeis')],
[sg.Text('Valor: '), sg.Input(key='Valor_pago')],
[sg.Text('Data:'), sg.Input(key='Data')],
[sg.Button('Adicionar')]
]
# Janela
window = sg.Window('Tela de Cadastro', layout)
# Ler os eventos
while True:
events, values = window.read()
if events == sg.WINDOW_CLOSED:
break
if events == 'Adicionar':
columns = list(values.keys())
rows = list(values.values())
print(rows)
print(columns)
df = pd.DataFrame(data=rows)
df.to_csv('dados/registro.csv', sep=';', mode='a', index=False)
df_new = pd.read_csv('dados/registro.csv', sep=';')
print(df_new)