TKInter hilfe mein Programm funktioniert nich :(

Fragen zu Tkinter.
Antworten
domaniel
User
Beiträge: 4
Registriert: Mittwoch 4. Mai 2011, 12:15

Hey freunde der Informatik
ich hab folgendes Problem :
Ich möchte dieses Programm zum laufen bringen
aba irgwie klappt es nich :(
könntet ihr vllt mal drüber schauen und mir verbesserungsvorschläge bringen?
danke im vorraus

Code: Alles auswählen

#-*- coding: cp1252 -*-
from Tkinter import *
from math import *

class Flaecheninhaltsberechner:
    def __init__(self):

        #Widgets instanzieren
        self.fenster = Tk()

        self.name = Label(master=self.fenster,
                           text = 'Flaecheninhaltsberechner',
                           font = ('Arial' ,20),fg='green', bg='black')
        self.umrandung = Frame(master=self.fenster,
                               relief=RIDGE, bd=3, bg='yellow')
        self.aLabel = Label(master=self.umrandung,
                            text='Wovon möchten Sie die Fläche berechnet haben?')
        
        self.v = StringVar()
        self.v.set(0)
        
        self.v = Entry(master=self.umrandung, width=20)
        self.radio1 = Radiobutton(self.umrandung, value= 'One', variable=self.v, text='Dreieck')
        self.radio2 = Radiobutton(self.umrandung, value= 'Two', variable=self.v, text='Quadrat')
        self.radio3 = Radiobutton(self.umrandung, value= 'Three', variable=self.v, text='Rechteck')
        self.radio4 = Radiobutton(self.umrandung, value= 'Four', variable=self.v, text='Kreis')
        self.radio5 = Radiobutton(self.umrandung, value= 'Five', variable=self.v, text='Parallelogramm')
        self.bLabel = Label(master=self.umrandung,
                            text='Geben Sie hier ein : Bei Rechteck, Parallelogramm, Quadrat und Dreieck die Unterkante und für den Kreis den Radius.')
        self.entryA = Entry(master=self.umrandung, width=20)
        self.cLabel = Label(master=self.umrandung,
                            text='Geben Sie hier ein : Bei Rechteck die Seitenkante, bei Dreieck und Parallelogramm die Höhe.')
        self.entryB = Entry(master=self.umrandung, width=20)
        self.berechne = Button(master=self.umrandung, text="Berechne!", command = self.mache)
        self.ergebniszeiglabel = Label(master=self.umrandung, text="")
        self.layout()
        self.fenster.mainloop()
        
        
    def dreiecksberechnung(self):
        d = float(self.entryA.get() )* float(self.entryA.get()) * 0.5
        return d

    def quadratsberechnung(self):
        q = float(self.entryA.get()) * float(self.entryA.get())
        return q

    def rechtecksberechnung(self):
        r = float(self.entryA.get()) * float(self.entryB.get())
        return r

    def kreisberechnung(self):
        k = 3.14 * float(self.entryA.get()) * float(self.entryA.get())
        return k

    def parallelogrammberechnung(self):
        p = float(self.entryA.get()) * float(self.entryB.get()) 
        return p
        
        
    def mache(self):
        self.v.get()
        if self.v.get() =="One":
            ergebnis = self.dreiecksberechnung()
        if self.v.get() == "Two":
            ergebnis = self.quadratsberechnung()
        if self.v.get() == "Three":
            ergebnis = self.rechtecksberechnung()
        if self.v.get() == "Four":
            ergebnis = self.kreisberechnung()
        else:
            ergebnis = self.parallelogrammberechnung()
            
        self.ergebniszeiglabel.config(text=str(ergebnis))
        

    def layout(self):
        self.name.pack()
        self.umrandung.pack()
        self.aLabel.pack()
        self.radio1.pack()
        self.radio2.pack()
        self.radio3.pack()
        self.radio4.pack()
        self.radio5.pack()
        self.bLabel.pack()
        self.entryA.pack(padx=05,pady=05)
        self.cLabel.pack()
        self.entryB.pack(padx=05,pady=05)
        self.ergebniszeiglabel.pack()
        self.berechne.pack()
        

#Hauptprogramm
rechner = Flaecheninhaltsberechner()






Eine Antwort würde mich echt freuen bin verzweifelt
mfg Domaniel
Zuletzt geändert von domaniel am Mittwoch 4. Mai 2011, 12:50, insgesamt 2-mal geändert.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Würdest du den Quellcode bitte in [python][/python]-tags setzen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
domaniel
User
Beiträge: 4
Registriert: Mittwoch 4. Mai 2011, 12:15

habe ich gemacht=)
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Du machst einige Fehler bzw. hast einige unötige Strukturen drin, aber dein Hauptproblem ist vermutlich "self.v = Entry(master=self.umrandung, width=20)" - diese Zeile, da du "self.v" überschreibst, so kannst du die Variable später nicht auswerten.

Edit: und Willkommen im Forum :D
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
domaniel
User
Beiträge: 4
Registriert: Mittwoch 4. Mai 2011, 12:15

danke schonmal ich kann es jetzt nich ausprobieren aber es hört sich nach einer möglichen lösung an =)



Edit : Danke :p
problembär

domaniel hat geschrieben:danke schonmal ich kann es jetzt nich ausprobieren
Oh Mann, dann sag' mal, wenn Du bereit bist, die Vorschläge auszuprobieren. Sonst haben die nämlich überhaupt keinen Sinn.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

@problembär
Nun reg dich mal wieder ab, er sagt "jetzt" nicht ausprobieren. Vieleicht sitzt er nur an einem anderen Rechner oder hat seinen USB-Stick irgendwo *liegen gelassen*. :roll:
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo domaniel

Willkommen im Forum! Hier habe ich dir etwas zum herumspielen, erweitern, abändern, verbessern usw.:

Code: Alles auswählen

# -*- coding: utf-8 -*-

import Tkinter as tk
from math import *

NAME = 'Flächenrechner'
FONT_NAME = ('Arial' ,20)
LABEL_AUSWAHL = 'Wovon möchten Sie die Fläche berechnet haben?'

LABEL_EINGABE_A = 'Eingabe-A:'
REMARK_ENTRY_A =\
'''Geben Sie hier ein :
    Bei Rechteck, Parallelogramm, Quadrat und Dreieck die Unterkante
    und für den Kreis den Radius.'''
    
LABEL_EINGABE_B = 'Eingabe-B:'
REMARK_ENTRY_B =\
'''Geben Sie hier ein :
    Bei Rechteck die Seitenkante, bei Dreieck
    und Parallelogramm die Höhe.'''
BUTTON_NAME = 'Berechnen'
LABEL_RESULT = 'Berechnungs-Ergebnis'

class FlaechenRechner(object):
    
    def __init__(self):
     
        self.fenster = tk.Tk()
        
        # Titel
        self.name = tk.Label(self.fenster,
            text=NAME, font=FONT_NAME, fg='green', bg='gray40', bd=4, padx=10,
            highlightthickness=0, relief='raised')
        self.name.pack(side='top', pady=10)
      
        self.label_auswahl = tk.Label(None, text=LABEL_AUSWAHL,
            fg='blue', bg=self.fenster['bg'])
        self.label_auswahl.pack()

        self.umrandung = tk.LabelFrame(self.fenster, relief='groove', bd=2,
            bg=self.fenster['bg'], labelwidget=self.label_auswahl, pady=10)
        self.umrandung.pack(side='top', fill='both', expand='no',
            padx=10, pady=10)

        self.v = tk.StringVar()
        self.v.set(0)

        self.radio_button_data = [
            ['One', 'Dreieck'],
            ['Two', 'Quadrat'],
            ['Three', 'Rechteck'],
            ['Four', 'Kreis'],
            ['Five', 'Parallelogramm']
            ]
            
        # Erstelle alle Auswahl-Radiobuttons
        self.radio_buttons = [tk.Radiobutton(self.umrandung, value=value,
            text=text,variable=self.v).pack(side='top', anchor='nw', padx=10)
            for value, text in self.radio_button_data]

        # Eingabe-A
        self.label_entry_a = tk.Label(None, text=LABEL_EINGABE_A, fg='blue',
            bg=self.fenster['bg'])
        self.label_entry_a.pack()

        self.frame_entry_a = tk.LabelFrame(self.fenster, relief='groove', bd=2,
            bg=self.fenster['bg'], labelwidget=self.label_entry_a, pady=5)
        self.frame_entry_a.pack(side='top', fill='both', expand='no', padx=10,
            pady=10)

        self.label_remark_a = tk.Label(self.frame_entry_a, text=REMARK_ENTRY_A,
            bg=self.fenster['bg'], justify='left', anchor='w', fg='brown')
        self.label_remark_a.pack(side='top', fill='x', padx=5, pady=5)
        
        self.entry_a = tk.Entry(self.frame_entry_a, width=20, bg='white', bd=1,
            highlightthickness=0)
        self.entry_a.pack(side='top', anchor='center', pady=5)
        self.entry_a.insert(0, 0.0)
        
        # Eingabe-B
        self.label_entry_b = tk.Label(None, text=LABEL_EINGABE_B, fg='blue',
            bg=self.fenster['bg'])
        self.label_entry_b.pack()

        self.frame_entry_b = tk.LabelFrame(self.fenster, relief='groove', bd=2,
            bg=self.fenster['bg'], labelwidget=self.label_entry_b, pady=5)
        self.frame_entry_b.pack(side='top', fill='both', expand='no', padx=10,
            pady=10)

        self.label_remark_b = tk.Label(self.frame_entry_b, text=REMARK_ENTRY_B,
            bg=self.fenster['bg'], justify='left', anchor='nw', fg='brown')
        self.label_remark_b.pack(side='top', fill='x', padx=5, pady=5)
        
        self.entry_b = tk.Entry(self.frame_entry_b, width=20, bg='white', bd=1,
            highlightthickness=0)
        self.entry_b.pack(side='top', anchor='center', padx=5, pady=5)
        self.entry_b.insert(0, 0.0)
        
        # Ergebnis
        self.label_result_frame = tk.Label(None, text=LABEL_RESULT, fg='blue',
            bg=self.fenster['bg'])
        self.label_result_frame.pack()

        self.frame_result = tk.LabelFrame(self.fenster, relief='groove', bd=2,
            bg=self.fenster['bg'], labelwidget=self.label_result_frame, pady=5)
        self.frame_result.pack(side='top', fill='both', expand='no', padx=10,
            pady=10)

        self.result = tk.StringVar()
        self.result.set(0.0)
        
        self.label_result = tk.Label(self.frame_result, highlightthickness=0,
            bd=1, relief='sunken', bg='white',textvariable=self.result,
            width=20)
        self.label_result.pack(side='top', pady=5)

        # Befehl: Berechnen
        self.button_calculate = tk.Button(self.fenster, text=BUTTON_NAME,
            command = self.calculate)
        self.button_calculate.pack(side='top', pady=5)

        # Setze den Radiobutton für die Quadratberechnung
        self.v.set('Two')
        
        self.fenster.mainloop()
 
    def calculate(self):
 #       self.v.get()
        if self.v.get() =="One":
            ergebnis = self.dreiecksberechnung()
        if self.v.get() == "Two":
            ergebnis = self.quadratsberechnung()
        if self.v.get() == "Three":
            ergebnis = self.rechtecksberechnung()
        if self.v.get() == "Four":
            ergebnis = self.kreisberechnung()
        else:
            ergebnis = self.parallelogrammberechnung()
           
        self.result.set(ergebnis)
        
    def dreiecksberechnung(self):
        d = float(self.entry_a.get() )* float(self.entry_a.get()) * 0.5
        return d

    def quadratsberechnung(self):
        q = float(self.entry_a.get()) * float(self.entry_a.get())
        return q

    def rechtecksberechnung(self):
        r = float(self.entry_a.get()) * float(self.entry_b.get())
        return r

    def kreisberechnung(self):
        k = 3.14 * float(self.entry_a.get()) * float(self.entry_a.get())
        return k

    def parallelogrammberechnung(self):
        p = float(self.entry_a.get()) * float(self.entry_b.get())
        return p
             
rechner = FlaechenRechner()
BEMERKUNG: Eingabe- und Berechnungsfehler musst du noch selber abfangen.

Noch viel Spass beim Programmieren mit Python & Tkinter

Gruß wuf :wink:
Take it easy Mates!
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

@wuf
Gut das du noch nicht alle Fehler beseitigt hast :) - sind aber noch andere, als die von dir erwähnten drin.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
paddg 42
User
Beiträge: 9
Registriert: Montag 23. November 2009, 17:27

@wuf:
Die Liste self.radio_buttons speichert nur eine Liste mit den Rückgabewerten von pack(). Und die sind immer None!
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

@paddg 42
Ja, du musst "pack()" erst später auf das Widget ausführen, denn "pack()" selbst hat keinen Rückgabewert. Die Iteration da oben ist so auch nicht schön, wenn es schon LC sein muss, dann kann man die keywords auch vorher in ein Wörterbuch speichern un dieses dann einsetzten. Aber LC ist hier nicht anwendbar, da wie du bemerkt hast das Widget noch auf die Oberfläche packen musst.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

@Xynon1 & paddg 42

Danke für eure Antworten. Ich wusste schon, dass eine Anweisung wie:

Code: Alles auswählen

tk.Radiobutton(master,...-).pack()
keine Referenz sondern ein: zurück gibt. Somit ist klar, dass die LC eine Liste mit None generiert.

In meinem Skript habe ich:

Code: Alles auswählen

self.radio_buttons
nur als Dummy benutzt. Die Referenzen der Radiobuttons werden ja gar nicht weiter benötigt, da der Zugriff auf diese über die Steuervariable:

Code: Alles auswählen

self.v
erfolgt. Ich wusste allerdings noch nicht, dass eine LC auch ohne Zuweisung stehen kann, da ich eine sie noch nie ohne gesehen habe. :-) Somit kann an Stelle von:

Code: Alles auswählen

# Erstelle alle Auswahl-Radiobuttons
self.radio_buttons = [tk.Radiobutton(self.umrandung, value=value,
    text=text,variable=self.v).pack(side='top', anchor='nw', padx=10)
    for value, text in self.radio_button_data]
auch:

Code: Alles auswählen

# Erstelle alle Auswahl-Radiobuttons
[tk.Radiobutton(self.umrandung, value=value,
    text=text,variable=self.v).pack(side='top', anchor='nw', padx=10)
    for value, text in self.radio_button_data]
geschrieben werden.
Xynon1 hat geschrieben:Gut das du noch nicht alle Fehler beseitigt hast :) - sind aber noch andere, als die von dir erwähnten drin.
Über meine anderen Fehler möchte ich natürlich auch noch mehr erfahren :-). Weiterbildung ist heute enorm wichtig.

Gruß wuf :wink:
Take it easy Mates!
BlackJack

@wuf: Das ist dann aber Missbrauch einer LC wenn man die Liste gar nicht haben will. Das macht den Quelltext nur verwirrender als eine "normale" Schleife.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

@BlackJack OK. Danke für deinen Hinweis.

Dann würde ich sagen machen wir es wie folgt:

Code: Alles auswählen

# Erstelle alle Auswahl-Radiobuttons
self.radio_buttons = list()
for value, text in self.radio_button_data:
    radio_button = tk.Radiobutton(self.umrandung, value=value,
        text=text,variable=self.v)
    radio_button.pack(side='top', anchor='nw', padx=10)
    self.radio_buttons.append(radio_button)
Gruß wuf :wink:
Take it easy Mates!
paddg 42
User
Beiträge: 9
Registriert: Montag 23. November 2009, 17:27

wuf hat geschrieben:
Xynon1 hat geschrieben:Gut das du noch nicht alle Fehler beseitigt hast :) - sind aber noch andere, als die von dir erwähnten drin.
Über meine anderen Fehler möchte ich natürlich auch noch mehr erfahren :-). Weiterbildung ist heute enorm wichtig.
Mir ist noch etwas aufgefallen: Die Methode calculate (oder bei domaniel mache) gibt für den Kreis die richtige Berechnung aus, für all anderen die Paralellogrammberechnung (wegen dem else). Besser mit elif:

Code: Alles auswählen

def calculate(self):
        if self.v.get() =="One":
            ergebnis = self.dreiecksberechnung()
        elif self.v.get() == "Two":
            ergebnis = self.quadratsberechnung()
        elif self.v.get() == "Three":
            ergebnis = self.rechtecksberechnung()
        elif self.v.get() == "Four":
            ergebnis = self.kreisberechnung()
        else:
            ergebnis = self.parallelogrammberechnung()
        print self.radio_buttons
        self.result.set(ergebnis)
Alternativ geht es auch, wenn man im ursprünglichen Code die else-Zeile durch ' if self.v.get()=="Five": ' ersetzt.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

@wuf
Sagtest du nicht, du brauchst die RadioButtons nicht wirklich :mrgreen:

Andere Fehler wären zB.
- ein Tk-Toplevel in dem FlächenRechner zu erzeugen und diesen nicht als Frame zu implementieren. (So kann mann ihn nur für diese eine Anwendung nutzen)
- self.v.set(0) - bringt gar nicht, du musst schon "self.v.set(self.radio_button_data[0][0])" oder "self.v.set('One') nutzen. (dem entsprechend solltest du auch über das gesetzte self.v.set('Two') nach denken)
- in "calculate" ist es ziemlich unsinnig das Ergebnis immer wieder mit ".get()" zu holen, da jedes dieser gets eine Tk-interaktion ist und somit ein etwas teurer Zugriff, ich würde hier auch ein Wörterbuch nehmen
- In den Berechnungs-Methoden kannst du auch gleich das Ergebnis zurückgeben brauchst die Variable nicht
- Zudem würde ich die Methoden als normale Funktionen schreiben, da diese allgemein gültig sind und die Parameter entsprechen übergeben
- und natürlich eine richtige "if __name__ == '__main__':" ein bauen
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

@Xynon1 Besten Dank für deine Anregungen.

Gruß wuf :wink:
Take it easy Mates!
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Eventuell kannst du dir noch mal die ganzen "pack()"-Aufrufe ansehen und dort einen gemeinsamen Nenner finden und diesen als Standard in einem Wörterbuch definieren.

Code: Alles auswählen

frame_style = dict(side='top', fill='both', expand='no', padx=10,  pady=10)
label_style = dict(side='top', fill='x', padx=5, pady=5)

self.frame_entry_a.pack(frame_style)
self.label_remark_a.pack(label_style)
self.frame_entry_b.pack(frame_style)
self.label_remark_b.pack(label_style)
self.frame_result.pack(frame_style)

#und wenn es doch mal leicht abweicht
self.label_remark_x.pack(label_style, side="left")
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Xynon1

Nach einfliessen lassen deiner interessanten und hilfreichen Anregungen entstand ein nächster Wurf des 'Flächenrechner':

Code: Alles auswählen

# -*- coding: utf-8 -*-

import Tkinter as tk
from math import *

NAME = 'Flächenrechner'
FONT_NAME = ('Arial' ,20)
LABEL_AUSWAHL = 'Wovon möchten Sie die Fläche berechnet haben?'

LABEL_EINGABE_A = 'Eingabe-A:'
REMARK_ENTRY_A =\
'''Geben Sie hier ein :
    Bei Rechteck, Parallelogramm, Quadrat und Dreieck die Unterkante
    und für den Kreis den Radius.'''
    
LABEL_EINGABE_B = 'Eingabe-B:'
REMARK_ENTRY_B =\
'''Geben Sie hier ein :
    Bei Rechteck die Seitenkante, bei Dreieck
    und Parallelogramm die Höhe.'''
BUTTON_NAME = 'Berechnen'
LABEL_RESULT = 'Berechnungs-Ergebnis'

class FlaechenRechner(tk.Frame):
    
    def __init__(self, app, calc_nr, **keys):
     
        tk.Frame.__init__(self, app, **keys)
        
        label_frm_prop = dict(relief='groove', bd=2, bg=self['bg'],
            pady=5)
        label_frm_style = dict(side='top', fill='both', expand='no',
            padx=10, pady=10)
            
        label_rem_prop = dict(bg=self['bg'], justify='left',
            anchor='nw', fg='brown')
        label_rem_style = dict(side='top', fill='x', padx=5, pady=5)
        
        entry_prop = dict(width=20, bg='white', bd=1, highlightthickness=0)
        entry_style = dict(side='top', anchor='center', padx=5, pady=5)
        
        # Titel
        self.name = tk.Label(self,
            text=NAME+'-'+str(calc_nr), font=FONT_NAME, fg='green', bg='gray40',
            bd=4, padx=10, highlightthickness=0, relief='raised')
        self.name.pack(side='top', pady=10)
      
        self.label_auswahl = tk.Label(None, text=LABEL_AUSWAHL,
            fg='blue', bg=self['bg'])
        self.label_auswahl.pack()

        self.umrandung = tk.LabelFrame(self, label_frm_prop,
            labelwidget=self.label_auswahl)
        self.umrandung.pack(label_frm_style)

        self.v = tk.StringVar()

        self.radio_button_data = [
            ['One', 'Dreieck'],
            ['Two', 'Quadrat'],
            ['Three', 'Rechteck'],
            ['Four', 'Kreis'],
            ['Five', 'Parallelogramm']
            ]
            
        # Erstelle alle Auswahl-Radiobuttons
        self.radio_buttons = list()
        for value, text in self.radio_button_data:
            radio_button = tk.Radiobutton(self.umrandung, value=value,
                text=text,variable=self.v)
            radio_button.pack(side='top', anchor='nw', padx=10)
            self.radio_buttons.append(radio_button)
            
        # Eingabe-A
        self.label_entry_a = tk.Label(None, text=LABEL_EINGABE_A, fg='blue',
            bg=self['bg'])
        self.label_entry_a.pack()

        self.frame_entry_a = tk.LabelFrame(self, label_frm_prop,
            labelwidget=self.label_entry_a)
        self.frame_entry_a.pack(label_frm_style)

        self.label_remark_a = tk.Label(self.frame_entry_a, label_rem_prop,
            text=REMARK_ENTRY_A)
        self.label_remark_a.pack(label_rem_style)
        
        self.entry_a = tk.Entry(self.frame_entry_a, entry_prop)
        self.entry_a.pack(entry_style)
        self.entry_a.insert(0, 0.0)
        
        # Eingabe-B
        self.label_entry_b = tk.Label(None, text=LABEL_EINGABE_B, fg='blue',
            bg=self['bg'])
        self.label_entry_b.pack()

        self.frame_entry_b = tk.LabelFrame(self, label_frm_prop,
            labelwidget=self.label_entry_b)
        self.frame_entry_b.pack(label_frm_style)

        self.label_remark_b = tk.Label(self.frame_entry_b, label_rem_prop,
            text=REMARK_ENTRY_B)
        self.label_remark_b.pack(label_rem_style)
        
        self.entry_b = tk.Entry(self.frame_entry_b, entry_prop)
        self.entry_b.pack(entry_style)
        self.entry_b.insert(0, 0.0)
        
        # Ergebnis
        self.label_result_frame = tk.Label(None, text=LABEL_RESULT, fg='blue',
            bg=self['bg'])
        self.label_result_frame.pack()

        self.frame_result = tk.LabelFrame(self, relief='groove', bd=2,
            bg=self['bg'], labelwidget=self.label_result_frame, pady=5)
        self.frame_result.pack(side='top', fill='both', expand='no', padx=10,
            pady=10)

        self.result = tk.StringVar()
        self.result.set(0.0)
        
        self.label_result = tk.Label(self.frame_result, highlightthickness=0,
            bd=1, relief='sunken', bg='white',textvariable=self.result,
            width=20)
        self.label_result.pack(side='top', pady=5)

        # Befehl: Berechnen
        self.button_calculate = tk.Button(self, text=BUTTON_NAME,
            command = self.calculate)
        self.button_calculate.pack(side='top', pady=5)

        # Setze den Radiobutton für die Quadratberechnung
        self.v.set('Two')
 
    def calculate(self):
 #       self.v.get()
        if self.v.get() =="One":
            ergebnis = self.dreiecksberechnung()
        if self.v.get() == "Two":
            ergebnis = self.quadratsberechnung()
        if self.v.get() == "Three":
            ergebnis = self.rechtecksberechnung()
        if self.v.get() == "Four":
            ergebnis = self.kreisberechnung()
        else:
            ergebnis = self.parallelogrammberechnung()
           
        self.result.set(ergebnis)
        
    def dreiecksberechnung(self):
        print 1
        d = float(self.entry_a.get() )* float(self.entry_a.get()) * 0.5
        return d

    def quadratsberechnung(self):
        print 2
        q = float(self.entry_a.get()) * float(self.entry_a.get())
        return q

    def rechtecksberechnung(self):
        print 3
        r = float(self.entry_a.get()) * float(self.entry_b.get())
        return r

    def kreisberechnung(self):
        print 4
        k = 3.14 * float(self.entry_a.get()) * float(self.entry_a.get())
        return k

    def parallelogrammberechnung(self):
        print 5
        p = float(self.entry_a.get()) * float(self.entry_b.get())
        return p

if __name__ == '__main__':
 
    app = tk.Tk()
    app.title('Flächenrechner-Plattform')
      
    rechner_1 = FlaechenRechner(app, 1)
    rechner_1.pack(side='left')
    
    rechner_2 = FlaechenRechner(app, 2)
    rechner_2.pack(side='left')

    
    app.mainloop()
BEMERKUNG: Habe die mathematische Umgebung belassen wie sie ist.

Besten Dank! Gruß wuf :wink:
Take it easy Mates!
domaniel
User
Beiträge: 4
Registriert: Mittwoch 4. Mai 2011, 12:15

boah danke leute ihr seit meine rettung

vielen vielen dank (: nochmal
Antworten