Seite 1 von 1

Funktionen eingeben und plotten

Verfasst: Mittwoch 21. August 2013, 13:34
von Jaga
Servus zusammen,

für ein Schulprojekt bin ich dabei einen Funtionsplotter zu programmieren.
Aus einem Tkinter-entry soll die vorher eingegebene Funktion ausgelesen und geplottet werden.
Allerdings hat matplotlib bzw numpy ein problem damit, wenn ichs mit "get text " auslesen will.

Hier mal mein Programmcode bisher:

Code: Alles auswählen

import matplotlib.pyplot as plt
import numpy as np
import Tkinter
import pylab as p


root = Tkinter.Tk()
root.title("Projekt")

f1 = Tkinter.Frame(root, bg = "red")
f1.pack()

l1 = Tkinter.Label(f1, text = "Funktion")
l1.pack()

e1 = Tkinter.Entry(f1, width = 30)
e1.pack()

l2 = Tkinter.Label(f1, text = "Startwert der Funktion")
l2.pack()

e2 = Tkinter.Entry(f1, width = 15)
e2.pack()

l3 = Tkinter.Label(f1, text = "Endwert der Funktion")
l3.pack()

e3 = Tkinter.Entry(f1, width = 15)
e3.pack()

l4 = Tkinter.Label(f1, text = "Abstand zwischen zu berechnenden Punkten")
l4.pack()

e4 = Tkinter.Entry(f1, width = 15)
e4.pack()

 
def plot():
                    x = p.arange (int(e2.get()),int( e3.get()),int( e4.get()))
                    y = p.sin(x)
                    p.plot(x,y)
##    pass

                    
b1 = Tkinter.Button(f1, text = "Funktion Plotten", command = plot())
b1.pack()
Hat jemand eine Idee?
danke schonmal im :D vorraus!

Re: Funktionen eingeben und plotten

Verfasst: Mittwoch 21. August 2013, 15:01
von BlackJack
@Jaga: Die Namen sind furchtbar. Ein oder zwei Buchstaben sind nur in wenigen Fällen sinnvoll. Das Ziel sollte sein einen lesbaren und *verständlichen* Quelltext zu schreiben und nicht mit möglichst wenig Buchstaben auszukommen. Ein Name sollte dem Leser vermitteln was der Wert dahinter im Kontext des Programms bedeutet. So etwas wie `e4` tut das mit Sicherheit nicht.

Du rufst die `plot`-Funktion auf und übegibst dann deren Ergebnis an das `command`-Argument vom `Button`. An der Stelle musst Du aber die Funktion nicht aufrufen, sondern nur die Funktion selbst als Argument übergeben. Wenn Du die aufrufst, stehen ja noch gar keine Werte in den Eingabefeldern und leere Zeichenketten kann man nicht in Zahlen umwandeln. In dem Zusammenhang wäre es nett gewesen wenn Du den kompletten Traceback gezeigt hättest. Da stehen solche Hinweise nämlich drin.

Das nächste Problem ist dann, dass Du die Hauptschleife von Tk aufrufen musst, damit sich das Programm nicht sofort beendet.

Re: Funktionen eingeben und plotten

Verfasst: Donnerstag 22. August 2013, 09:56
von Jaga
@ BlackJack: das ist überhauptnicht mein Problem.
Ich will im ersten entry eine Funktion zum Beispiel x²+4x-2 eingeben.
In der plot - Funktion soll diese dann ausgelesen werden und geplottet werden.
Mein Problem ist allerdings, dass die Funktionen so nicht ausgelesen werden können.

Re: Funktionen eingeben und plotten

Verfasst: Donnerstag 22. August 2013, 10:19
von EyDu
Jaga hat geschrieben:@ BlackJack: das ist überhauptnicht mein Problem.
Doch, das ist zunächst dein Problem. Ohne eine sinnvolle Grundstruktur ist es sinnlos weitere Features für das Programm zu etwickeln.