Hier habe ich meinen Code so zusammengekürzt das nur eine Berechnung vorhanden ist.
Jetzt würde ich gerne die Zeilen 62 - 570 "Auslagern".
Code: Alles auswählen
import tkinter as tk
from tkinter import ttk,Button, Tk,Entry, END,Label,CENTER
import math
import pyperclip
from functools import partial
from datetime import datetime
from tkcalendar import DateEntry
import os
import csv
import re
#Arbeitsverzeichnis
arbpf = os.getcwd()
pfad = (f'{arbpf}\\Daten\\')
class HauptFenster(tk.Tk):
def __init__(self):
super().__init__()
self.eingabeframe = EingabeFrame(self)
self.eingabeframe.pack()
def monatssaldo():
Wer = self.eingabeframe.welche_combox.get()
Nur_Jahr = str(self.eingabeframe.kalender.get_date())[0:4]
monat=str(self.eingabeframe.kalender.get_date())[5:7]
class Monatssaldofenstermonat(tk.Tk):
def __init__(self):
super().__init__()
self.eingabeframe = EingabeFrame(self)
self.eingabeframe.pack()
# ------------ Hauptfenstermonat erstellen --------------------------------------------
fenstermonatbreite = 360
fenstermonathöhe = 200
bildschirm_center_x = self.winfo_screenwidth() / 2 - fenstermonatbreite/2
bildschirm_center_y = self.winfo_screenheight() / 2 - fenstermonathöhe/2
self.geometry("%dx%d+%d+%d" % (fenstermonatbreite,fenstermonathöhe,bildschirm_center_x, bildschirm_center_y))
self.resizable(width=0, height=0) # fenstermonat kann nicht vergrössert werden
self.title("Monatssaldo Konto: "+Wer+" "+Nur_Jahr)
self.attributes("-topmost", True)
class EingabeFrame(ttk.Frame): # Vorteil wenn etwas im Frame geändert werden soll in dieser Classe ändern
def __init__(self, container):
super().__init__(container)
# ---- Auslagern --------------------------------------------------
def Monatzu():
Wer = self.eingabeframe.welche_combox.get()
Nur_Jahr = str(self.eingabeframe.kalender.get_date())[0:4]
arbpf = os.getcwd()
pfad = (f'{arbpf}\\Daten\\')
def number_format(zahl):
zahl = "%.2f" % zahl
zahl = zahl.replace(",",".")
nochmal = 1
while nochmal:
(zahl,nochmal) = re.subn(r"(\d)(\d\d\d\D)",r"\1'\2",zahl)
return zahl
#---------- KASSSABUCH MONAT ANZEIGEN ---------------------------
def monatszusammenfassung():
zusammenfassung_erstellen()
class Table:
def __init__(self,fenster):
for i in range(total_rows):
for j in range(total_columns):
self.e = Entry(fenster,
width=15,
fg='black',
background='#fce4f9',#Hintergrundfarbe
bd=2, #Linien dicke
font=('Arial',12),
justify = CENTER)
self.e.grid(row=i, column=j)
self.e.insert(END, daten[i][j])
zeile = 0
with open(pfad+Wer+"_Kassabuch_Monat_"+Nur_Jahr+".kbu", encoding="utf-8", newline='') as f:
zeile = zeile+1
reader = csv.reader(f)
daten = [tuple(row) for row in reader]
total_rows = len(daten)
total_columns = len(daten[0])
fenster = Tk()
fenster.title('Monatliche zusammenfassung: '+Nur_Jahr)
fenster.attributes("-topmost", True)
t = Table(fenster)
fenster.mainloop()
# ------ MONATLICHE ZUSAMMENSTELLUNG ---------------------------
def zusammenfassung_erstellen(): #Monatliche zusammenstellung
Januareinnahmen = 0
Januarausgaben = 0
JanuarSaldo = 0
Febeinnahmen = 0
Febausgaben = 0
FebSaldo = 0
Mareinnahmen = 0
Marausgaben = 0
MarSaldo = 0
ApSaldo = 0
Apeinnahmen = 0
Apausgaben = 0
MaiSaldo = 0
Maieinnahmen = 0
Maiausgaben = 0
JunSaldo = 0
Juneinnahmen = 0
Junausgaben = 0
JuSaldo = 0
Jueinnahmen = 0
Juausgaben = 0
JuSaldo = 0
Aueinnahmen = 0
Auausgaben = 0
AuSaldo = 0
Seeinnahmen = 0
Seausgaben = 0
SeSaldo = 0
Okeinnahmen = 0
Okausgaben = 0
OkSaldo = 0
Noeinnahmen = 0
Noausgaben = 0
NoSaldo = 0
Deeinnahmen = 0
Deausgaben = 0
DeSaldo = 0
gefunden01=0
gefunden02=0
gefunden03=0
gefunden04=0
gefunden05=0
gefunden06=0
gefunden07=0
gefunden08=0
gefunden09=0
gefunden10=0
gefunden11=0
gefunden12=0
zählermo1 = 0
zählermo2 = 0
zählermo3 = 0
zählermo4 = 0
zählermo5 = 0
zählermo6 = 0
zählermo7 = 0
zählermo8 = 0
zählermo9 = 0
zählermo10 = 0
zählermo11= 0
zählermo12 = 0
pfad_zu = (f'{arbpf}\\Daten\\zusammenstellung\\')
# Alle Dateien löschen
for filename in os.listdir(pfad_zu):
os.remove(os.path.join(pfad_zu, filename))
# Daten einlesen
with open(pfad+Wer+"_Kassabuch_"+Nur_Jahr+".kbu", "r") as Datei:
for line in Datei:
line_splitted = line.strip().split(";")
if line_splitted[0] == "Datum":
pass
else:
Nur_monat = (line_splitted[0])[3:5]
# Monatliche zusammenstellung und in Datei schreiben
if Nur_monat == "01":
Januareinnahmen = (float(line_splitted[1])) + Januareinnahmen
Januarausgaben = (float(line_splitted[2])) + Januarausgaben
JanuarSaldo = Januareinnahmen - Januarausgaben
if zählermo1 == 0:
with open(pfad_zu+Wer+"_mo_1_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo1 = zählermo1 + 1
else:
with open(pfad_zu+Wer+"_mo_1_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa: #,encoding="utf-8"
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "02":
Febeinnahmen = (float(line_splitted[1])) + Febeinnahmen
Febausgaben = (float(line_splitted[2])) + Febausgaben
FebSaldo = Febeinnahmen - Febausgaben
if zählermo2 == 0:
with open(pfad_zu+Wer+"_mo_2_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo2 = zählermo2 + 1
else:
with open(pfad_zu+Wer+"_mo_2_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "03":
Mareinnahmen = (float(line_splitted[1])) + Mareinnahmen
Marausgaben = (float(line_splitted[2])) + Marausgaben
MarSaldo = Mareinnahmen - Marausgaben
if zählermo3 == 0:
with open(pfad_zu+Wer+"_mo_3_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo3 = zählermo3 + 1
else:
with open(pfad_zu+Wer+"_mo_3_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa: #,encoding="utf-8"
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "04":
Apeinnahmen = (float(line_splitted[1])) + Apeinnahmen
Apausgaben = (float(line_splitted[2])) + Apausgaben
ApSaldo = Apeinnahmen - Apausgaben
if zählermo4 == 0:
with open(pfad_zu+Wer+"_mo_4_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo4 = zählermo4 + 1
else:
with open(pfad_zu+Wer+"_mo_4_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "05":
Maieinnahmen = (float(line_splitted[1])) + Maieinnahmen
Maiausgaben = (float(line_splitted[2])) + Maiausgaben
MaiSaldo = Maieinnahmen - Maiausgaben
if zählermo5 == 0:
with open(pfad_zu+Wer+"_mo_5_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo5 = zählermo5 + 1
else:
with open(pfad_zu+Wer+"_mo_5_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "06":
Juneinnahmen = (float(line_splitted[1])) + Juneinnahmen
Junausgaben = (float(line_splitted[2])) + Junausgaben
JunSaldo = Juneinnahmen - Junausgaben
if zählermo6 == 0:
with open(pfad_zu+Wer+"_mo_6_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo6 = zählermo6 + 1
else:
with open(pfad_zu+Wer+"_mo_6_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "07":
Jueinnahmen = (float(line_splitted[1])) + Jueinnahmen
Juausgaben = (float(line_splitted[2])) + Juausgaben
JuSaldo = Jueinnahmen - Juausgaben
if zählermo7 == 0:
with open(pfad_zu+Wer+"_mo_7_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo7 = zählermo7 + 1
else:
with open(pfad_zu+Wer+"_mo_7_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "08":
Aueinnahmen = (float(line_splitted[1])) + Aueinnahmen
Auausgaben = (float(line_splitted[2])) + Auausgaben
AuSaldo = Aueinnahmen - Auausgaben
if zählermo8 == 0:
with open(pfad_zu+Wer+"_mo_8_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo8 = zählermo8 + 1
else:
with open(pfad_zu+Wer+"_mo_8_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "09":
Seeinnahmen = (float(line_splitted[1])) + Seeinnahmen
Seausgaben = (float(line_splitted[2])) + Seausgaben
SeSaldo = Seeinnahmen - Seausgaben
if zählermo9 == 0:
with open(pfad_zu+Wer+"_mo_9_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo9 = zählermo9 + 1
else:
with open(pfad_zu+Wer+"_mo_9_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "10":
Okeinnahmen = (float(line_splitted[1])) + Okeinnahmen
Okausgaben = (float(line_splitted[2])) + Okausgaben
OkSaldo = Okeinnahmen - Okausgaben
if zählermo10 == 0:
with open(pfad_zu+Wer+"_mo_10_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo10 = zählermo10 + 1
else:
with open(pfad_zu+Wer+"_mo_10_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "11":
Noeinnahmen = (float(line_splitted[1])) + Noeinnahmen
Noausgaben = (float(line_splitted[2])) + Noausgaben
NoSaldo = Noeinnahmen - Noausgaben
if zählermo11 == 0:
with open(pfad_zu+Wer+"_mo_11_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo11 = zählermo11 + 1
else:
with open(pfad_zu+Wer+"_mo_11_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
elif Nur_monat == "12":
Deeinnahmen = (float(line_splitted[1])) + Deeinnahmen
Deausgaben = (float(line_splitted[2])) + Deausgaben
DeSaldo = Deeinnahmen - Deausgaben
if zählermo12 == 0:
with open(pfad_zu+Wer+"_mo_12_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write("Datum;Eingang;Ausgang;Text;Beleg-Nr.\n")
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
zählermo12 = zählermo12 + 1
else:
with open(pfad_zu+Wer+"_mo_12_zusammenstellung_"+Nur_Jahr+".kbu", "a") as fa:
fa.write((line_splitted[0]) + ";"
+ (line_splitted[1])+";"
+(line_splitted[2]) + ";"
+ (line_splitted[3])+";"
+ (line_splitted[4])+ "\n")
Januareinnahmen = (number_format(Januareinnahmen))
Januarausgaben = (number_format(Januarausgaben))
JanuarSaldo = (number_format(JanuarSaldo))
Febeinnahmen = (number_format(Febeinnahmen))
Febausgaben = (number_format(Febausgaben))
FebSaldo = (number_format(FebSaldo))
Mareinnahmen = (number_format(Mareinnahmen))
Marausgaben = (number_format(Marausgaben))
MarSaldo = (number_format(MarSaldo))
Apeinnahmen = (number_format(Apeinnahmen))
Apausgaben = (number_format(Apausgaben))
ApSaldo = (number_format(ApSaldo))
Maieinnahmen = (number_format(Maieinnahmen))
Maiausgaben = (number_format(Maiausgaben))
MaiSaldo = (number_format(MaiSaldo))
Juneinnahmen = (number_format(Juneinnahmen))
Junausgaben = (number_format(Junausgaben))
JunSaldo = (number_format(JunSaldo))
Jueinnahmen = (number_format(Jueinnahmen))
Juausgaben = (number_format(Juausgaben))
JuSaldo = (number_format(JuSaldo))
Aueinnahmen = (number_format(Aueinnahmen))
Auausgaben = (number_format(Auausgaben))
AuSaldo = (number_format(AuSaldo))
Seeinnahmen = (number_format(Seeinnahmen))
Seausgaben = (number_format(Seausgaben))
SeSaldo = (number_format(SeSaldo))
Okeinnahmen = (number_format(Okeinnahmen))
Okausgaben = (number_format(Okausgaben))
OkSaldo = (number_format(OkSaldo))
Noeinnahmen = (number_format(Noeinnahmen))
Noausgaben = (number_format(Noausgaben))
NoSaldo = (number_format(NoSaldo))
Deeinnahmen = (number_format(Deeinnahmen))
Deausgaben = (number_format(Deausgaben))
DeSaldo = (number_format(DeSaldo))
# In Datei schreiben
with open(pfad+Wer+"_Kassabuch_Monat_"+Nur_Jahr+".kbu", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f, delimiter=",")
writer.writerow(["Monat","Einnahmen", "Ausgaben", "Saldo"])
writer.writerow(["Januar",Januareinnahmen,Januarausgaben, JanuarSaldo])
writer.writerow(["Februar",Febeinnahmen,Febausgaben, FebSaldo])
writer.writerow(["März",Mareinnahmen,Marausgaben, MarSaldo])
writer.writerow(["April",Apeinnahmen,Apausgaben, ApSaldo])
writer.writerow(["Mai",Maieinnahmen,Maiausgaben, MaiSaldo])
writer.writerow(["Juni",Juneinnahmen,Junausgaben, JunSaldo])
writer.writerow(["Juli",Jueinnahmen,Juausgaben, JuSaldo])
writer.writerow(["August",Aueinnahmen,Auausgaben, AuSaldo])
writer.writerow(["September",Seeinnahmen,Seausgaben, SeSaldo])
writer.writerow(["Oktober",Okeinnahmen,Okausgaben, OkSaldo])
writer.writerow(["November",Noeinnahmen,Noausgaben, NoSaldo])
writer.writerow(["Dezember",Deeinnahmen,Deausgaben, DeSaldo])
monatszusammenfassung()
# ---------------------- Ende Auslagern ---------------------------------------------------------
# ------------ HauptFenster erstellen --------------------------------------------
self.title("Kassabuch")
self.attributes("-topmost", True)
menuleiste = tk.Menu(self)
datei_menu = tk.Menu(menuleiste, tearoff=0)
datei_Auswerten = tk.Menu(menuleiste, tearoff=0)
datei_Auswerten.add_command(label="Monatliche zusammenstellung", command=Monatzu)#
menuleiste.add_cascade(label="Auswerten", menu=datei_Auswerten)
self.config(menu=menuleiste)
class EingabeFrame(ttk.Frame):
def __init__(self, container):
super().__init__(container)
# ---------- Frame erstellen ---------------
self.welche = tk.StringVar()
self.betrag = tk.StringVar()
self.beleg = tk.StringVar()
# Label für Auswahl Buchhaltung
self.Datum_label = ttk.Label(self, text="Datum: ")
self.Datum_label.grid(column=0, row=0, sticky="W", pady="10", padx="5")
#Heutiges Datum anzeigen
self.kalender = DateEntry(self,width=5, font="Arial 10",selectmode='day',background='#ebe12c', foreground='#000000', borderwidth=1)
self.kalender.grid(row=0, column=1,padx='5', pady='2',sticky='ew')
# Label für Auswahl Buchhaltung
self.we_name_label = ttk.Label(self, text="Welches Kassabuch?")
self.we_name_label.grid(column=0, row=1, sticky="W", pady="2", padx="5")
# Einlesen was für Buchhaltungen vorhanden sind
buchhaltung=["Lohn","Haushalt","Haus","Mietwohnung"]
# Combox für Welche Buchaltung
self.welche_combox = ttk.Combobox(self, width=20, state="readonly")
self.welche_combox['values'] = buchhaltung
self.welche_combox.current(0)
self.welche_combox.grid(column=1, row=1, sticky="W", pady="2", padx="5")
def main():
fenster = HauptFenster()
fenster.mainloop()
if __name__ == "__main__":
main()