Ich schreibe ein GUI Programm zur Berechnung von Einsparpotenzial von Asynchronmotoren bei wechsel zu Synchron Reluktanzmotoren.
Bei der Eingabe von zahlen in den Eingabefeldern skalliert python das Balkendiagramm nie ab 0, auch wenn ich ylim(0,8000) eingebe(dann spinnt das Diagramm komplett)
Dies geschieht jedoch nur wen ich es in der funktion "def get_value(): ausführe.
Wenn man für die Balkenwerte irgendwelche zahlen nimmt anstatt die Variable wo die Eingabe gespeichert wird, klappt es einwandfrei. Irgendwie macht das keinen sinn und mir fällt keine Lösung dazu ein.
Code: Alles auswählen
from tkinter import *
from math import *
import matplotlib.pyplot as plt
import numpy as np
main = Tk()
main.geometry('850x650')
main.title('Energieverbrauchsrechner für Asynchron und Synchron Reluktanzmotoren')
# Eingabefeld Entry Widget ---------------------------------------------------------
def evaluate(event):
res.configure(text = "Ergebnis: " + str(eval(entry.get())))
entry = Entry(main)
entry.bind("<Return>", evaluate)
entry.place(x=380,y=140)
entry2 = Entry(main)
entry2.bind("<Return>", evaluate)
entry2.place(x=380,y=230)
entry3 = Entry(main)
entry3.bind("<Return>", evaluate)
entry3.place(x=380,y=310)
entry4 = Entry(main)
entry4.bind("<Return>", evaluate)
entry4.place(x=380,y=390)
entry5 = Entry(main)
entry5.bind("<Return>", evaluate)
entry5.place(x=380,y=470)
# Radiobuttons Energieeffizienzklasse -----------------------------------------------
v = IntVar()
v.set(1) # initializing the choice, i.e. Python
languages = [
("IE1",1),
("IE2",2),
("IE3",3)
]
def ShowChoice():
printv.get()
Label(main,
text="""Energieeffizienzklasse:""",
justify = LEFT).place(x=260,y=35)
for txt, val in languages:
Radiobutton(main,
text=txt,
variable=v,pady=5,
command=ShowChoice,
value=val).pack()
#Einspeichern der Leistung und Betriebsstundenzahl in Variable --------------------------------------------------------------------------------------------------
def get_value():
KW = entry.get()
_100_ = entry2.get()
_75_ = entry3.get()
_50_ = entry4.get()
_25_ = entry5.get()
fig, ax = plt.subplots()
Last = ('100%', '75%', '50%', '25%')
Betriebsstunden = [_100_,_75_,_50_,_25_]
y_pos = np.arange(len(Last))
plt.title('Lastprofil')
plt.ylabel('Betriebsstunden pro Jahr')
plt.xlabel("Lastbereich")
plt.bar(y_pos, Betriebsstunden, align='center', alpha=0.6)
ax.set_xticks(range(len(Last)))
ax.set_xticklabels(Last, rotation='vertical')
plt.show()
#Buttons & Labels --------------------------------------------------------------------------------------------------
button = Button(main, text="Berechnung starten!", command=get_value)
buttonquit = Button(main, text='Programm schließen!', command=main.quit).place(x=550,y=600)
label1 = Label(main,text='Betriebsstunden im Jahr')
label2 = Label(main,text='Lastbereich des Motors')
label3 = Label(main,text='100%')
label4 = Label(main,text='75%')
label5 = Label(main,text='50%')
label6 = Label(main,text='25%')
msg = Message(main,text='Rechner zur Ermittlung von Einsparpotenzial und Amortisationszeit zwischen Asynchron- & Synchron Reluktanzmotoren')
label7 = Label(main,text='Bemessungsleistung des Asynchronmotors in KW:')
msg.config(bg='lightgreen', font=('times', 15, 'italic'),relief=RIDGE)
#Platzieren der Buttons,Sliders,Labels ----------------------------------------------------------------------------------------------
button.place(x=380,y=600)
label1.place(x=370,y=190)
label2.place(x=10,y=190)
label3.place(x=10,y=230)
label4.place(x=10,y=310)
label5.place(x=10,y=390)
label6.place(x=10,y=470)
label7.place(x=370,y=100)
msg.place(x=10,y=10)
mainloop()
schonmal vielen dank!