ich habe begonnen mit Tkinter mit eine GUI zu basteln, das klappte auch ganz gut. Das Programm macht aber leider trotzdem nicht das, was ich will:
Es empfängt zwei Zahlen (z.B. 1,4 und 20) vom Nutzer und berechnet dann nach Button "Do it" den Wert (siehe dazu die Funktion calc im code unten). Dieses Ergebnis soll angezeigt werden, bis man den nächsten Wert mit anderen Zahlen berechnet.
Das Ergebnis der Berechnung in def calc() soll in einem Label angezeigt werden, doch das passiert nicht. Die Fehlermeldung ist auch etwas kryptisch: "Exception in Tkinter callback Traceback (most recent call last):".
Weiß jemand den Grund für meine Probleme?
Code: Alles auswählen
from tkinter import *
from tkinter import messagebox
root = Tk()
root.wm_title("Calculate something")
root.config(background="#FFFFFF")
leftFrame = Frame(root, width=200, height=400)
leftFrame.grid(row=0, column=0, padx=10, pady=3)
leftLabel1 = Label(leftFrame, text="This app helps to calculate")
leftLabel1.grid(row=0, column=0, padx=10, pady=3)
rightFrame = Frame(root, width=200, height=400)
rightFrame.grid(row=0, column=1, padx=10, pady=3)
rightLabel1 = Label(rightFrame, text="first number:")
rightLabel1.grid(row=0, column=1, padx=10, pady=3)
rightLabel2 = Label(rightFrame, text="2nd number")
rightLabel2.grid(row=1, column=1, padx=10, pady=3)
rightLabel3 = Label(rightFrame, text="Result")
rightLabel3.grid(row=3, column=1, padx=10, pady=25)
num1_var = DoubleVar()
num2_var = DoubleVar()
# entrys
num1_ent = Entry(rightFrame, width=30, textvariable=num1_var)
num1_ent.grid(row=0, column=2, padx=10, pady=3)
num2_ent = Entry(rightFrame, width=30, textvariable=num2_var)
num2_ent.grid(row=1, column=2, padx=10, pady=3)
def calc():
num1 = num1_var.get()
num2 = num2_var.get()
if num1 == num2:
messagebox.showerror(titel = "Error", message = "Sorry, you should have two different numbers", icon = "error")
elif num1 < num2:
rightLabel4 = Label(rightFrame, width=30, text=((num2 - num1)-1))
rightLabel4.grid(row=3, column=2, padx=10, pady=25)
elif num1 > num2:
rightLabel4 = Label(rightFrame, width=30, text=((num2 - num1)-5))
rightLabel4.grid(row=3, column=2, padx=10, pady=25)
buttonFrame = Frame(rightFrame)
buttonFrame.grid(row=3, column=1, padx=10, pady=3)
B1 = Button(rightFrame, text="Do it", bg="#FF0000", width=15, command=calc)
B1.grid(row=2, column=2, padx=50, pady=10)
root.mainloop() # GUI wird upgedatet. Danach keine Elemente setzen