Funktionen eingeben und plotten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jaga
User
Beiträge: 64
Registriert: Mittwoch 21. August 2013, 13:18

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!
Zuletzt geändert von Anonymous am Mittwoch 21. August 2013, 14:49, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
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.
Jaga
User
Beiträge: 64
Registriert: Mittwoch 21. August 2013, 13:18

@ 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.
FASTER! HARDER! LOUDER!
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

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.
Das Leben ist wie ein Tennisball.
Antworten