Repository navigation
Expand file tree
/
Copy pathmain.py
More file actions
327 lines (236 loc) · 13.5 KB
/
Copy pathmain.py
File metadata and controls
327 lines (236 loc) · 13.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
from PyQt5 import uic, QtWidgets
from PyQt5 import QtCore
from datetime import date
class FrmPrincial:
def __init__(self):
# Definindo dados['saldo']
dados['saldo'] = 0
# Exibindo FrmPrincipal
frm_principal.show()
# Definindo largura de cada coluna da Tabela
frm_principal.tabela.setColumnWidth(0, 309)
frm_principal.tabela.setColumnWidth(1, 115)
frm_principal.tabela.setColumnWidth(2, 115)
# Deixando invisivel a coluna numérica da esquerda
frm_principal.tabela.verticalHeader().setVisible(False)
# insirindo data atual
frm_remover_alterar_transacao.data.setDate(data_atual)
frm_transacoes.textdata.setDate(data_atual)
# Botões do FrmPrincipal
frm_principal.btntransactions.clicked.connect(FrmPrincial.btn_transactions_clicked)
frm_principal.btnsaldo.clicked.connect(FrmPrincial.btn_adicionarsaldo_clicked)
frm_principal.btnremover.clicked.connect(FrmPrincial.btn_remover_alterar_clicked)
# Chamando FrmRemover_Alterar
FrmRemover_Alterar()
def FecharSaldo(self):
# Fechando FrmSaldo
frm_saldo.close()
# Limpando Linha Saldo
frm_saldo.textsaldo.clear()
def FecharTransactions(self):
# Fechando FrmTransactions
frm_transacoes.close()
# Limpando as Linhas Descrição, Valor e Data
frm_transacoes.textdescricao.clear()
frm_transacoes.textvalor.clear()
frm_transacoes.textdata.clear()
def btn_adicionarsaldo_clicked(self):
# Abrindo FrmAdicionarSaldo
frm_saldo.show()
# Cliques dos Botões do Formulário
frm_saldo.btnsalvar.clicked.connect(FrmPrincial.adicionar_saldo)
frm_saldo.btncancelar.clicked.connect(FrmPrincial.FecharSaldo)
# Colocando cor padrão da Mensagem de Erro e da Borda da Linha
frm_saldo.msgerror.setStyleSheet("color: #F0F0F0;")
frm_saldo.textsaldo.setStyleSheet("background-color: rgb(255,255,255); border-radius: 2px; border: 2px solid white;")
def btn_transactions_clicked(self):
# Abrindo FrmTransactions
frm_transacoes.show()
# Cliques dos Botões do Formulário
frm_transacoes.btncancelar.clicked.connect(FrmPrincial.FecharTransactions)
frm_transacoes.btnsalvar.clicked.connect(FrmPrincial.transactions)
# Colocando cor Padrão das Mensagens de Erro e da Borda das Linhas
frm_transacoes.textdescricao.setStyleSheet("background-color: rgb(255, 255, 255); border-radius: 2px; border 2px solid white")
frm_transacoes.textvalor.setStyleSheet("background-color: rgb(255, 255, 255); border-radius: 2px; border: 2px solid white;")
frm_transacoes.lblerror.setStyleSheet('color: rgb(240, 242, 245);')
def btn_remover_alterar_clicked(self):
# Abrindo FrmRemover/Alterar Transactions
frm_remover_alterar_transacao.show()
def adicionar_saldo(self):
# Informando que variável saldo é igual a linha de Texto Saldo
saldo = frm_saldo.textsaldo.text()
# Verificando se saldo é número
if saldo.isnumeric():
#Transformando variável saldo em número inteiro
saldo = int(frm_saldo.textsaldo.text())
# Informando que agora dados['saldo'] é igual a variável saldo
dados['saldo'] = saldo
# Fazendo os calculos da lblTotal_Saídas e lblTotal_Final do FrmPrincipal
frm_principal.lblentrada.setText(lang.toString(saldo * 0.01, 'f', 2))
frm_principal.lbltotal.setText(lang.toString((dados['saldo'] - sum(gastos_saidas)) * 0.01, 'f', 2))
# Limpando linha de Texto Saldo
frm_saldo.textsaldo.clear()
# Fechando FrmSaldo
frm_saldo.close()
# Verificando se a linha de Texto Saldo está vazia
elif saldo == "":
frm_saldo.msgerror.setText("Digite um Valor!")
frm_saldo.msgerror.setStyleSheet("color: red;")
frm_saldo.textsaldo.setStyleSheet("background-color: rgb(255, 255, 255); border-radius: 2px; border: 2px solid red;")
# Verificando se há ponto ou virgula na linha de Texto Saldo
elif saldo.count(",") or saldo.count(".") > 0:
frm_saldo.msgerror.setText("Não insira ponto ou virgula!")
frm_saldo.msgerror.setStyleSheet("color: red;")
# Verificando se linha de texto não é numérica
elif not saldo.isnumeric():
frm_saldo.msgerror.setText("Insira apenas números!")
frm_saldo.msgerror.setStyleSheet("color: red;")
def transactions(self):
# Definindo os Valores Digitados
dados["descricao"] = frm_transacoes.textdescricao.text()
dados["valor"] = frm_transacoes.textvalor.text()
dados["data"] = frm_transacoes.textdata.text()
# Colocando o valor do dados['valor'] na variálvel valor
valor = frm_transacoes.textvalor.text()
# Verificando se a Linha Descrição está vazia
if frm_transacoes.textdescricao.text().strip() == "":
frm_transacoes.textdescricao.setStyleSheet("background-color: rgb(255, 255, 255); border-radius: 2px; border: 2px solid red;")
# Verificando se a Linha Valor está vazia
elif frm_transacoes.textvalor.text().strip() == "":
frm_transacoes.textvalor.setStyleSheet("background-color: rgb(255, 255, 255); border-radius: 2px; border: 2px solid red;")
# Verificando se A ponto ou virgula na Linha Valor
elif valor.count(',') or valor.count('.') > 0:
frm_transacoes.lblerror.setText('Não insira ponto ou virgula!')
frm_transacoes.lblerror.setStyleSheet('color: red;')
# Verificando se a Linha valor é um número
elif not valor.isnumeric():
frm_transacoes.lblerror.setText('Insira apenas números!')
frm_transacoes.lblerror.setStyleSheet('color: red;')
else:
# Fechando FormulárioTransações
frm_transacoes.close()
#Adicionando a Descrição no ComboBox selecionar itens do FrmRemover/Alterar Transações
frm_remover_alterar_transacao.selecionar_item.addItem(dados["descricao"])
# Transformando linhaValor em um número Inteiro
valor = int(frm_transacoes.textvalor.text())
# Adicionando variável valor no dados['valor']
dados["valor"] = valor
# Adicionado variável valor na lista Gastos_Saídas
gastos_saidas.append(valor)
# Fazendo os calculos da lblTotal_Saídas, lblTotal_Final
frm_principal.lblsaidas.setText(lang.toString(sum(gastos_saidas) * 0.01, 'f', 2))
frm_principal.lbltotal.setText(lang.toString((dados['saldo'] - sum(gastos_saidas)) * 0.01, 'f', 2))
# Adicionando dados do dicionário na Lista dadoscopy
dadoscopy.append(dados.copy())
# Limpando as linhas de Texto
frm_transacoes.textdescricao.clear()
frm_transacoes.textvalor.clear()
# Variável das linhas da tabela
row = 0
# Colunas serão igual ao total de dados na Lista dados copy
frm_principal.tabela.setRowCount(len(dadoscopy))
for dado in dadoscopy:
# Adicionando os dados Digitados na Tabela no FrmPrincipal
frm_principal.tabela.setItem(row, 0, QtWidgets.QTableWidgetItem(dado['descricao']))
frm_principal.tabela.setItem(row, 1, QtWidgets.QTableWidgetItem(lang.toString(dado['valor'] * 0.01, 'f', 2)))
frm_principal.tabela.setItem(row, 2, QtWidgets.QTableWidgetItem(dado['data']))
row += 1
class FrmRemover_Alterar:
def __init__(self):
# Cliques dos Botões
frm_remover_alterar_transacao.btn_ok.clicked.connect(FrmRemover_Alterar.ok_clicked_Alterar)
frm_remover_alterar_transacao.btnremover.clicked.connect(FrmRemover_Alterar.remover_dados)
frm_remover_alterar_transacao.btnalterar.clicked.connect(FrmRemover_Alterar.alterar_dados)
def remover_dados(self):
# Variável item armazena o texto da ComboBox
item = frm_remover_alterar_transacao.selecionar_item.currentText()
# Verifica se item não está vazio
if item != '':
# Pegando cada dado da Lista dadoscopy
for dado in dadoscopy:
# Verificando se item é igual ao dado
if item == dado['descricao']:
# Coletando a posição do Dado
posicao = dadoscopy.index(dado)
# Removendo o dado da lista dadoscopy
dadoscopy.remove(dado)
# Removendo coluna da Tabela do FrmPrincipal
frm_principal.tabela.removeRow(posicao)
frm_principal.tabela.setRowCount(len(dadoscopy))
# Limpando o combobox
frm_remover_alterar_transacao.selecionar_item.removeItem(frm_remover_alterar_transacao.selecionar_item.currentIndex())
# Tirando o valor da Variavel gastos_saidas
gastos_saidas.remove(dado['valor'])
# Refazendo os calculos Total Saídas, Total Final
frm_principal.lbltotal.setText(lang.toString((dados['saldo'] - sum(gastos_saidas)) * 0.01, 'f', 2))
frm_principal.lblsaidas.setText(lang.toString(sum(gastos_saidas) * 0.01, 'f', 2))
# Limpando as Linhas
frm_remover_alterar_transacao.textdescricao.clear()
frm_remover_alterar_transacao.textvalor.clear()
def alterar_dados(self):
# Fechando FrmAlterar/Remover
frm_remover_alterar_transacao.close()
# Variável item é igual ao texto selecionado na ComboBox
item = frm_remover_alterar_transacao.selecionar_item.currentText()
# Verificando se o botão ok foi acionado, se o item é diferente de Vazio e o campo texto descricao é diferente de vazio
if FrmRemover_Alterar.ok_clicked_Alterar and item != '' and frm_remover_alterar_transacao.textdescricao.text() != '':
# Pegando cada dado da Lista dadoscopy
for dado in dadoscopy:
# Verificando se o item está nos dado['Descricao']
if item == dado["descricao"]:
p = dadoscopy.index(dado)
# removendo valor antigo do gastos saidas
gastos_saidas.remove(dado['valor'])
# Definindo os novos dados
dado['descricao'] = frm_remover_alterar_transacao.textdescricao.text()
dado['valor'] = int(frm_remover_alterar_transacao.textvalor.text())
dado['data'] = frm_remover_alterar_transacao.data.text()
# Adicionando o novo valor
gastos_saidas.append(dado['valor'])
# Refazendo os calculos Total Saídas, Total Final
frm_principal.lbltotal.setText(lang.toString((dados['saldo'] - sum(gastos_saidas)) * 0.01, 'f', 2))
frm_principal.lblsaidas.setText(lang.toString(sum(gastos_saidas) * 0.01, 'f', 2))
# Limpando as linhas de Texto
frm_remover_alterar_transacao.textdescricao.clear()
frm_remover_alterar_transacao.textvalor.clear()
# Variável das linhas da tabela
row = p
# Colunas serão igual ao total de dados na Lista dados copy
frm_principal.tabela.setRowCount(len(dadoscopy))
# Adicionando os dados Digitados na Tabela no FrmPrincipal
frm_principal.tabela.setItem(row, 0, QtWidgets.QTableWidgetItem(dado['descricao']))
frm_principal.tabela.setItem(row, 1, QtWidgets.QTableWidgetItem(lang.toString(dado['valor'] * 0.01, 'f', 2)))
frm_principal.tabela.setItem(row, 2, QtWidgets.QTableWidgetItem(dado['data']))
row += 1
# Removendo o antigo texto da combobox
frm_remover_alterar_transacao.selecionar_item.removeItem(frm_remover_alterar_transacao.selecionar_item.currentIndex())
# Adicionando o novo texto na combobox
frm_remover_alterar_transacao.selecionar_item.addItem(dado['descricao'])
def ok_clicked_Alterar(self):
# Variável item é igual ao texto selecionado na ComboBox
item = frm_remover_alterar_transacao.selecionar_item.currentText()
# Pegando cada dado da Lista dadoscopy
for dado in dadoscopy:
# Verificando se o item está nos dado['Descricao']
if item in dado["descricao"]:
# colocando os dados nas Linhas de Textos
frm_remover_alterar_transacao.textdescricao.setText(dado['descricao'])
frm_remover_alterar_transacao.textvalor.setText(str(dado['valor']))
if __name__ == '__main__':
# Variáveis,Listas e Dicionário
dados = {}
data_atual = date.today()
dadoscopy = []
loc = QtCore.QLocale.system().name()
lang = QtCore.QLocale(loc)
gastos_saidas = []
# Configurando Aplicação
app = QtWidgets.QApplication([])
frm_principal = uic.loadUi("View/frm_principal.ui")
frm_saldo = uic.loadUi("View/frm_saldo.ui")
frm_transacoes = uic.loadUi("View/frm_transacoes.ui")
frm_remover_alterar_transacao = uic.loadUi("View/frm_remover_alterar_transaçoes.ui")
# Exibindo FrmPrincipal
FrmPrincial()
# inicialiando Aplicação
app.exec()