kostenloser Webspace werbefrei: lima-city


Problem mit Python

lima-cityForumProgrammiersprachenPython

  1. Autor dieses Themas

    kozak

    Kostenloser Webspace von kozak

    kozak hat kostenlosen Webspace.

    Hallo allerseits. Brauche Hilfe, da ich net weiterkomme.
    Hoffe, es gibt hier ein Paar Python-Spezialisten.
    Gehts um folgendes. Ich will ein "mini"-Formelsammlung mittels Python schreiben. Soweit sogut, doch nun bin ich auf ein Punkt gestoßen, wo ich net weiter komme.
    import Tkinter
    
    def ende():
        main.withdraw()
    
        
            # FUNKTIONEN
    
    def fma(F=0,m=0,a=0):
        F = float(F)    # -> hier habe ich mit E1.get() versucht
        m = float(m)
        a = float(a)
        if m > 0 and a > 0:
            F=m*a
            print("F = %.2f N" % F)
            print("m = %.2f kg" % m)
            print("a = %.2f m/s^2" % a)
            return
        if F > 0 and a > 0:
            m=F/a
            print("F = %.2f N" % F)
            print("m = %.2f kg" % m)
            print("a = %.2f m/s^2" % a)
            return
        if F > 0 and m > 0:
            a=F/m
            print("F = %.2f N" % F)
            print("m = %.2f kg" % m)
            print("a = %.2f m/s^2" % a)
            return
        
    def fml(F=0,M=0,l=0):
        F = float(F)
        M = float(M)
        l = float(l)
        if M > 0 and l > 0:
            F=M*l
            print("F = %.2f N" % F)
            print("M = %.2f Nm" % M)
            print("l = %.2f m" % l)
            return
        if F > 0 and l > 0:
            M=F/l
            print("F = %.2f N" % F)
            print("M = %.2f Nm" % M)
            print("l = %.2f m" % l)
            return
        if F > 0 and M > 0:
            l=F/M
            print("F = %.2f N" % F)
            print("M = %.2f Nm" % M)
            print("l = %.2f m" % l)
            return
    
    def pfa(p=0,F=0,A=0):
        p = float(p)
        F = float(F)
        A = float(A)
        if p > 0 and F > 0:
            A=F/p
            print("p = %.2f Pa" % p)
            print("F = %.2f N" % F)
            print("A = %.2f m^2" % A)
            return
        if p > 0 and A > 0:
            F=p*A
            print("p = %.2f Pa" % p)
            print("F = %.2f N" % F)
            print("A = %.2f m^2" % A)
            return
        if F > 0 and A > 0:
            p=F/A
            print("p = %.2f Pa" % p)
            print("F = %.2f N" % F)
            print("A = %.2f m^2" % A)
            return
    
    
            # Hauptprogramm
        
    main = Tkinter.Tk()
    main.title("Formelsammlung")
    main.geometry("480x220")
    
    
            # FELDER/FRAMES
        
    #FrameAL mit Anzeige-Label
    frameal = Tkinter.Frame(main)
    frameal.pack(fill = Tkinter.X)
    labelal = Tkinter.Label(frameal, bg="#FFFFFF", bd=4,
                            relief = "sunken", anchor="e")
    labelal.pack(fill = Tkinter.X, pady = 10)
    
    #FrameA
    framea = Tkinter.Frame(main)
    framea.pack(fill = Tkinter.X)
    #FrameB
    frameb = Tkinter.Frame(main)
    frameb.pack(fill = Tkinter.X)
    #FrameC
    framec = Tkinter.Frame(main)
    framec.pack(fill = Tkinter.X)
    #FrameD
    #framed = Tkinter.Frame(main)
    #framed.pack(fill = Tkinter.X)
    #FrameE
    #framee = Tkinter.Frame(main)
    #framee.pack(fill = Tkinter.X)
    #FrameF
    #framef = Tkinter.Frame(main)
    #framef.pack(fill = Tkinter.X)
    
    
            # LABELS
    
    #Label One
    label1 = Tkinter.Label(framea, text = "F = m*a")
    label1["font"] = "Courier 12 italic"
    label1["height"] = 2
    label1["width"] = 15
    label1["borderwidth"] = 4
    label1["relief"] = "groove"
    label1["bg"] = "#FFFFFF"
    label1["fg"] = "#000000"
    label1["anchor"] = "w"
    label1.pack(side = Tkinter.LEFT)
    
    #Label 2
    label2 = Tkinter.Label(framea, text = "M = F*l")
    label2["font"] = "Courier 12 italic"
    label2["height"] = 2
    label2["width"] = 15
    label2["borderwidth"] = 4
    label2["relief"] = "groove"
    label2["bg"] = "#FFFFFF"
    label2["fg"] = "#000000"
    label2["anchor"] = "w"
    label2.pack(side = Tkinter.LEFT)
    
    #Label 3
    label3 = Tkinter.Label(framea, text = "p = F/A")
    label3["font"] = "Courier 12 italic"
    label3["height"] = 2
    label3["width"] = 15
    label3["borderwidth"] = 4
    label3["relief"] = "groove"
    label3["bg"] = "#FFFFFF"
    label3["fg"] = "#000000"
    label3["anchor"] = "w"
    label3.pack(side = Tkinter.LEFT)
    
    
    
            #ENTRYS/EINGABEN
    
    # Krafteingabe
    E1 = Tkinter.Entry(frameb, width = 5)
    E1.insert(0, 'F')
    E1.pack(side = Tkinter.LEFT)
    E2 = Tkinter.Entry(frameb, width = 4)
    E2.insert(0, 'm')
    E2.pack(side = Tkinter.LEFT)
    E3 = Tkinter.Entry(frameb, width = 4)
    E3.insert(0, 'a')
    E3.pack(side = Tkinter.LEFT)
    # Button1
    b1 = Tkinter.Button(frameb, text = "Berechnen",
                        activebackground = "yellow", command = fma)
    b1.pack(side = Tkinter.LEFT)
    
    # Dregmomeneingabe
    E4 = Tkinter.Entry(frameb, width = 5)
    E4.insert(0, 'M')
    E4.pack(side = Tkinter.LEFT)
    E5 = Tkinter.Entry(frameb, width = 4)
    E5.insert(0, 'F')
    E5.pack(side = Tkinter.LEFT)
    E6 = Tkinter.Entry(frameb, width = 4)
    E6.insert(0, 'l')
    E6.pack(side = Tkinter.LEFT)
    # Button1
    b2 = Tkinter.Button(frameb, text = "Berechnen",
                        activebackground = "yellow", command = fml)
    b2.pack(side = Tkinter.LEFT)
    
    # Druckneingabe
    E7 = Tkinter.Entry(frameb, width = 5)
    E7.insert(0, 'p')
    E7.pack(side = Tkinter.LEFT)
    E8 = Tkinter.Entry(frameb, width = 4)
    E8.insert(0, 'F')
    E8.pack(side = Tkinter.LEFT)
    E9 = Tkinter.Entry(frameb, width = 4)
    E9.insert(0, 'A')
    E9.pack(side = Tkinter.LEFT)
    # Button1
    b3 = Tkinter.Button(frameb, text = "Berechnen",
                        activebackground = "yellow", command = pfa)
    b3.pack(side = Tkinter.LEFT)


    So sollte es aussehen: http://kozak.lima-city.de/sonstiges/Unbenannt-2.jpg
    Bei Punkt 1. sollte man die Werte eingeben und wenn man auf Berechnen drücke, dan soll der Antwort im oberen Label (2.) erscheinen.
    1.Frage:
    Wie kann ich es machen, dass die Werte eingelesen und übernommen werden ( bei 1.)
    Ich habe es mal mit .get() versucht. Problem: Die Werte werden dann zwar übernommen doch nicht in die Fkt. einbezogen.

    2.Frage:
    Was muss ich machen, damit das Ergebniss im oberen Label (bei 2.) erscheint? Da hebe ich leider keinen Ansatz.

    Weiteres Problem: Ich darf Fkt. "class" und "self" nicht benutzen.

    Hoffe es gibt hier paar Experten unter uns.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Also ich hab mal etwas nach tkinter gegoogelt und folgendes ist bei rausgekommen:

    1. http://effbot.org/tkinterbook/button.htm
    Wenn du auf den Button klickst wird die Callback aufgerufen.
    Dabei werden keinerlei Argumente übergeben, da der Button garnicht weiß, was du übergeben haben möchtest.
    Damit ergibt sich zum Beispiel für deine Callbackfunktion fma, dass die Daten in der Funktion selbst ausgelesen werden müssen.
    Dazu müssen in der Funktion die Entrys bekannt sein über die eingegeben wird. Das erreichst du über globale Variablen (schlechter Stil) oder über Klassen, die du ja nicht verwenden möchtest. Also ich setzt jetzt mal vorraus, dass du die Entrys E1, E2 und E3 als Global definiert hast und dann in der Funktion darauf zugreifen kannst:
    def fml():
        F = float(E1.get())
        m = float(E2.get())
        a = float(E3.get())
        #hier kommt dann das gleiche wie vorher

    2.
    Am besten schreibst du eine Funktion, die nur das erstetzen des Textes in 2 übernimmt.
    Die bekommt den neuen Text übergeben und muss natürlich das Ziel kennen. Das bedeutet wiederum eine globale Variable mehr nämlich das Zielfeld für das Ergebnis. Da ich es bei Oberflächlicher suche nicht ausmachen konnte nenne ich es erstmal Ziel und nehme an, dass es ein Entry(http://effbot.org/tkinterbook/entry.htm) ist, sollte es sich doch um ein Label (http://effbot.org/tkinterbook/label.htm) handeln, dann hilft die Funktion set(Text) weiter.
    def setze_ergebnis(erg):
        Ziel.delete(0, END)
        Ziel.insert(0, erg)

    Ich denke das sollte so stimmen. Ich hafte nicht für Fehler ;-)
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!