2016-09-28 3 views
0

Dies ist ein Code Problem für Python 3.5.2 John Zelle ist mit graphics.py:Wie zeichne ich Plot mit Zelle Graphics?

ich eine gute Zeit für die Antwort hier auf der Suche verbracht haben, aber kann es nicht herausfinden. Die Funktion undraw() existiert genau wie getMouse(). Aber es scheint, dass es für den plot() Befehl, nur den draw() Befehl nicht funktioniert. Was mache ich falsch? Und wie kann ich das Fenster offen halten, aber den vorherigen Plot löschen, bevor der nächste gezeichnet wird?

pdf Dokumentation für die Funktionen von graphics:

        http://mcsp.wartburg.edu/zelle/python/graphics/graphics.pdf

win = GraphWin("Plot",500,500) # Creates a window 

for m in range(0,j): # Loop for each function 
    # Randomizes a color for each function 
    color = random.choice(['red','black','green','yellow','pink','blue']) 
    for h in range(0,t): # Loop for each pair of values "x,y" 
     # Find points and plot each point in win 
     win.plot(axis[h],points[m][h],color) 
    win.getMouse() # Pause before clicking 
    win.undraw() # AttributeError: 'GraphWin' object has no attribute 'undraw' 
+1

Nicht genügend Informationen ... so schließen + jetzt . Fügen Sie Dinge hinzu wie: welche Sprache? was lib? was genau ist "gewinnen" und wo ist es definiert/deklariert? – Spektre

Antwort

0

Das erste Problem ist, dass undraw() ein Verfahren zur Herstellung GraphicsObject ist, nicht GraphWin, so win.undraw() einfach falsch ist.

Das zweite Problem ist, dass plot() ist eine Low-Level-Pixel-Einstellungsmethode, die nicht verfolgt, was es auf der Ebene Grafik-Ebene, im Gegensatz zu Objekten, die gezeichnet werden.

Allerdings ist die Untermauerung Tkinter die Spur von Objekten tut halten, die sie zieht, und GraphWin ist eine Unterklasse von Canvas, so können Sie dies tun:

win = GraphWin("Plot", 500, 500) # Creates a window 

for m in range(j): # Loop for each function 
    color = random.choice(['red', 'black', 'green', 'yellow', 'pink', 'blue']) # Randomizes a color for each function 
    for h in range(t): # Loop for each pair of values "x, y" 
     win.plot(axis[h], points[m][h], color) # Find points and plot each point in win 
    win.getMouse() # Pause before clicking 
    win.delete("all") # Clear out old plot 
+0

Ich denke, Ihre Antwort wäre klarer, wenn Sie anzeigten, dass 'win.delete (" all ")' die vererbte 'Canvas.delete() 'Methode aufruft (und ihr das spezielle vordefinierte Tag' 'all' 'übergibt). Die Leute wissen vielleicht nicht, dass 'GraphWin' keine eigene Definition einer Methode mit diesem Namen hat. – martineau

Verwandte Themen