Seite 1 von 1

Zinsrechner (Zeit) GUI Python

Verfasst: Montag 28. Juni 2021, 22:31
von liieea
Hallo Zusammen!
Ich versuche einen Zinsrechner zu erstellen (GUI), der die Zeit berechnet, die es benötigt um auf einen gewissen Wunschbetrag zu kommen.

Das ist der Quellcode, den ich gefunden und versucht habe zu ändern.


# import all classes / functions from the tkinter
from tkinter import *

# Function for clearing the
# contents of all entry boxes
def clear_all() :

# whole content of entry boxes is deleted
anfangskapital_field.delete(0, END)
zinssatz_field.delete(0, END)
zeit_field.delete(0, END)
wunschbetrag_field.delete(0, END)

# set focus on the principle_field entry box
anfangskapital_field.focus_set()


# Function to find compound interest
def calculate_wunschbetrag():

# get a content from entry box
anfangskapital = int(anfangskapital_field.get())

zinssatz = float(zinssatz_field.get())

zeit = int(zeit_field.get())

# Calculates compound interest
wunschbetrag = anfangskapital * (pow((1 + zinssatz/ 100), zeit))

# insert method inserting the
# value in the text entry box.
wunschbetrag_field.insert(10, wunschbetrag)



# Driver code
if __name__ == "__main__" :

# Create a GUI window
root = Tk()

# Set the background colour of GUI window
root.configure(background = 'light green')

# Set the configuration of GUI window
root.geometry("400x250")

# set the name of tkinter GUI window
root.title("Zinsrechner")

# Create a Principle Amount : label
label1 = Label(root, text = "Anfangskapital : ",
fg = 'black', bg = 'red')

# Create a Rate : label
label2 = Label(root, text = "Zinssatz(%) : ",
fg = 'black', bg = 'red')

# Create a Time : label
label3 = Label(root, text = "Zeit : ",
fg = 'black', bg = 'red')

# Create a Compound Interest : label
label4 = Label(root, text = "Wunschbetrag : ",
fg = 'black', bg = 'red')

# grid method is used for placing
# the widgets at respective positions
# in table like structure .

# padx keyword argument used to set padding along x-axis .
# pady keyword argument used to set padding along y-axis .
label1.grid(row = 1, column = 0, padx = 10, pady = 10)
label2.grid(row = 2, column = 0, padx = 10, pady = 10)
label3.grid(row = 3, column = 0, padx = 10, pady = 10)
label4.grid(row = 5, column = 0, padx = 10, pady = 10)

# Create a entry box
# for filling or typing the information.
anfangskapital_field= Entry(root)
zinssatz_field= Entry(root)
zeit_field= Entry(root)
wunschbetrag_field= Entry(root)

# grid method is used for placing
# the widgets at respective positions
# in table like structure .

# padx keyword argument used to set padding along x-axis .
# pady keyword argument used to set padding along y-axis .
anfangskapital_field.grid(row = 1, column = 1, padx = 10, pady = 10)
zinssatz_field.grid(row = 2, column = 1, padx = 10, pady = 10)
zeit_field.grid(row = 3, column = 1, padx = 10, pady = 10)
wunschbetrag_field.grid(row = 5, column = 1, padx = 10, pady = 10)

# Create a Submit Button and attached
# to calculate_ci function
button1 = Button(root, text = "Submit", bg = "red",
fg = "black", command = calculate_wunschbetrag)

# Create a Clear Button and attached
# to clear_all function
button2 = Button(root, text = "Clear", bg = "red",
fg = "black", command = clear_all)

button1.grid(row = 4, column = 1, pady = 10)
button2.grid(row = 6, column = 1, pady = 10)

# Start the GUI
root.mainloop()

Wie stellle ich den Code nun so um , dass er mir die Zeit aussrechnet?

Re: Zinsrechner (Zeit) GUI Python

Verfasst: Dienstag 29. Juni 2021, 06:34
von Sirius3
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
Benutze keine *-Importe, weil sie verschleiern, woher welcher Name kommt.
Alles was eine Funktion braucht, muß sie über ihre Argumente bekommen, bei `clear_all` zum Beispiel kommen anfangskapital_field, zinssatz_field, zeit_field und wunschbetrag_field aus dem Nichts.
Alles was unter `if __name__ == "__main__":` steht, sollte in einer Funktion sein, damit erst gar keine globalen Variablen entstehen.
Ein Fenster sollte ihre Größe selbst bestimmen und nicht per geomery vorgegeben bekommen.

Code: Alles auswählen

import tkinter as tk
from functools import partial

# Function for clearing the
# contents of all entry boxes
def clear_all(anfangskapital_field, zinssatz_field, zeit_field, wunschbetrag_field):
    # whole content of entry boxes is deleted
    anfangskapital_field.delete(0, tk.END)
    zinssatz_field.delete(0, tk.END)
    zeit_field.delete(0, tk.END)
    wunschbetrag_field.delet(0, tk.END)

    # set focus on the principle_field entry box
    anfangskapital_field.focus_set()


# Function to find compound interest
def calculate_wunschbetrag(anfangskapital_field, zinssatz_field, zeit_field, wunschbetrag_field):
    # get a content from entry box
    anfangskapital = int(anfangskapital_field.get())
    zinssatz = float(zinssatz_field.get())
    zeit = int(zeit_field.get())

    # Calculates compound interest
    wunschbetrag = anfangskapital * (1 + zinssatz/ 100) ** zeit

    # insert method inserting the
    # value in the text entry box.
    wunschbetrag_field.insert(10, wunschbetrag)

    
def main():
    root = tk.Tk()
    root.configure(background='light green')
    root.title("Zinsrechner")
    
    # Create a Principle Amount : label
    tk.Label(root, text="Anfangskapital : ", fg='black', bg='red').grid(row=1, column=0, padx=10, pady=10)
    anfangskapital_field = tk.Entry(root)
    anfangskapital_field.grid(row=1, column=1, padx=10, pady=10)

    tk.Label(root, text="Zinssatz(%) : ", fg='black', bg='red').grid(row=2, column=0, padx=10, pady=10)
    zinssatz_field = tk.Entry(root)
    zinssatz_field.grid(row=2, column=1, padx=10, pady=10)

    tk.Label(root, text="Zeit : ", fg='black', bg='red').grid(row=3, column=0, padx=10, pady=10)
    zeit_field = tk.Entry(root)
    zeit_field.grid(row=3, column=1, padx=10, pady=10)

    tk.Label(root, text="Wunschbetrag : ", fg='black', bg='red').grid(row=5, column=0, padx=10, pady=10)
    wunschbetrag_field = tk.Entry(root)
    wunschbetrag_field.grid(row=5, column=1, padx=10, pady=10)


    tk.Button(root, text="Submit", bg="red", fg="black",
        command=partial(calculate_wunschbetrag, anfangskapital_field, zinssatz_field, zeit_field, wunschbetrag_field)
    ).grid(row=4, column=1, pady=10)

    tk.Button(root, text="Clear", bg="red", fg="black",
        command=partial(clear_all, anfangskapital_field, zinssatz_field, zeit_field, wunschbetrag_field)
    ).grid(row=6, column=1, pady=10)

    root.mainloop()

if __name__ == "__main__" :
    main()
Bevor Du mit einer GUI anfängst, solltest Du erst einmal eine Funktion schreiben, die das ausrechnet, was Du möchtest.
Die Formel mit dem Wunschbetrag hast Du ja, die mußt Du nur noch nach der Zeit auflösen.