ich bin gerade eben erst hier dazugekommen, aber ich habe direkt mal eine Frage zu einem Code, den ich geschrieben habe und der einen Fehler auslöst: 'local variable 'a' referenced before assignment'. Ich kann allerdings die Fehlerquelle nicht finden. Zur Erklärung ich bin frischer Anfänger und bringe mir Python selbst bei. Es ist sehr gut möglich, dass mein Code sehr naiv ist, aber macht euch selbst ein Bild:
Code: Alles auswählen
from tkinter import *
import sys
import math
i = 0
a = 0
x = 0
y = 0
z = 0
v = 0
k = 0
# Hypotenuse
class Clickbutton(Button):
def wählen(self):
i = 1
#Ankathete
class Clickbutton2(Button):
def wählen(self):
a = 1
#Gegenkathete
class Clickbutton3(Button):
def wählen(self):
x = 1
#Höhe
class Clickbutton4(Button):
def wählen(self):
y = 1
#Flächeninhalt
class Clickbutton5(Button):
def wählen(self):
z = 1
#q
class Clickbutton6(Button):
def wählen(self):
v = 1
#p
class Clickbutton7(Button):
def wählen(self):
k = 1
class MyButton2(Button):
def reset(self):
Eingabe.delete(0, 'end')
Eingabe2.delete(0, 'end')
Eingabe3.delete(0, 'end')
Eingabe5.delete(0, 'end')
Eingabe6.delete(0, 'end')
Eingabe7.delete(0, 'end')
Eingabe8.delete(0, 'end')
class MyButton(Button):
def GO(self):
if a == 1 and x == 1: #Nicht funktionstüchtig in nächster Zeit überprüfen
zahl1 = float(Eingabe2.get())
zahl2 = float(Eingabe3.get())
Eingabe.delete(0,'end')
Eingabe.insert(0, math.sqrt(zahl1 * zahl1 + zahl2 * zahl2))
c = math.sqrt(zahl1 * zahl1 + zahl2 * zahl2)
q = zahl1 * zahl1 / c
Eingabe7.delete(0,'end')
Eingabe7.insert(0,q)
p = zahl2 * zahl2 / c
Eingabe8.delete(0,'end')
Eingabe8.insert(0,p)
h = math.sqrt(q * p)
Eingabe5.delete(0,'end')
Eingabe5.insert(0,p)
A = 1/2 * c * h
Eingabe6.delete(0,'end')
Eingabe6.insert(0,A)
a=0
x=0
if a == 1 and i == 1:
zahl1 = float(Eingabe.get())
zahl2 = float(Eingabe2.get())
b = math.sqrt(zahl1 * zahl1 - zahl2 * zahl2)
Eingabe3.delete(0,'end')
Eingabe3.insert(0,b)
q = zahl2 + zahl2 / zahl1
Eingabe7.delete(0,'end')
Eingabe7.insert(0,q)
p = b * b /zahl1
Eingabe8.delete(0,'end')
Eingabe8.insert(0,p)
h = math.sqrt(q * p)
Eingabe5.delete(0,'end')
Eingabe5.insert(0,h)
A = 1 / 2 * h * zahl1
Eingabe6.delete(0,'end')
Eingabe6.insert(0,A)
a=0
i=0
fenster = Tk()
fenster.geometry('700x300')
fenster.title('Pythagoras')
rahmen = Frame(fenster, relief = 'ridge', borderwidth = 5)
rahmen.pack(fill = 'both', expand = 1)
label0 = Label(rahmen, text = 'Geben Sie zwei Werte ein, der Rest wird berechnet.')
label0.grid(row = '2', column = '1')
#Eingabe Hypotenuse
label = Label(rahmen, text = 'Geben sie den Wert der Hypotensuse ein (c)')
label.grid(row = '3', column = '1')
Eingabe = Entry(rahmen, bd = '2', width = '22')
Eingabe.grid(row = '3', column = '2')
#Eingabe Ankathete <<< Bedeutung überprüfen
label2 = Label(rahmen, text = 'Geben sie den Wert der Ankathete ein' )
label2.grid(row = '4', column = '1')
Eingabe2 = Entry(rahmen, bd = '2', width = '22')
Eingabe2.grid(row = '4', column = '2')
#Eingabe Gegenkathete <<< Bedeutung überprüfen
label3 = Label(rahmen, text = 'Geben sie den Wert der Gegenkathete ein')
label3.grid(row = '5', column = '1')
Eingabe3 = Entry(rahmen, bd = '2', width = '22')
Eingabe3.grid(row = '5', column = '2')
#Eingabe Höhe
label5 = Label(rahmen, text = 'Geben sie den Wert der Höhe ein')
label5.grid(row = '6', column = '1')
Eingabe5 = Entry(rahmen, bd = '2', width = '22')
Eingabe5.grid(row = '6', column = '2')
#Eingabe Flächeninhalt
label6 = Label(rahmen, text = 'Geben sie den Wert des Flächeninhalts ein')
label6.grid(row = '7', column = '1')
Eingabe6 = Entry(rahmen, bd = '2', width = '22')
Eingabe6.grid(row = '7', column = '2')
#Eingabe q
label7 = Label(rahmen, text = 'Geben sie den Wert von q dem ersten Teilstück von c ein')
label7.grid(row = '8', column = '1')
Eingabe7 = Entry(rahmen, bd = '2', width = '22')
Eingabe7.grid(row = '8', column = '2')
#Eingabe p
label8 = Label(rahmen, text = 'Geben sie den Wert p dem zweiten Teilstück von c ein')
label8.grid(row = '9', column = '1')
Eingabe8 = Entry(rahmen, bd = '2', width = '22')
Eingabe8.grid(row = '9', column = '2')
Clickbutton = Clickbutton(rahmen,text = 'Wählen',width = '12')
Clickbutton['command'] = Clickbutton.wählen
Clickbutton.grid(row = '3', column = '3')
Clickbutton2 = Clickbutton2(rahmen,text = 'Wählen',width = '12')
Clickbutton2['command'] = Clickbutton2.wählen
Clickbutton2.grid(row = '4', column = '3')
Clickbutton3 = Clickbutton3(rahmen,text = 'Wählen',width = '12')
Clickbutton3['command'] = Clickbutton3.wählen
Clickbutton3.grid(row = '5', column = '3')
Clickbutton4 = Clickbutton4(rahmen,text = 'Wählen',width = '12')
Clickbutton4['command'] = Clickbutton4.wählen
Clickbutton4.grid(row = '6', column = '3')
Clickbutton5 = Clickbutton5(rahmen,text = 'Wählen',width = '12')
Clickbutton5['command'] = Clickbutton5.wählen
Clickbutton5.grid(row = '7', column = '3')
Clickbutton6 = Clickbutton6(rahmen,text = 'Wählen',width = '12')
Clickbutton6['command'] = Clickbutton6.wählen
Clickbutton6.grid(row = '8', column = '3')
Clickbutton7 = Clickbutton7(rahmen,text = 'Wählen',width = '12')
Clickbutton7['command'] = Clickbutton7.wählen
Clickbutton7.grid(row = '9', column = '3')
Button = MyButton(rahmen,text = 'GO',width = '12')
Button['command'] = Button.GO
Button.grid(row = '10', column = '1')
Button2 = MyButton2(rahmen,text = 'Reset',width = '12')
Button2['command'] = Button2.reset
Button2.grid(row = '11', column = '1')
#herausfinden wie man alpha, beta und gamma berechnet
#dann noch Knöpfe hinzufügen