2016-09-28 5 views
0

Это проблема код Python 3.5.2 с помощью John Zelle graphics.py-х:Как отменить график с графикой Zelle?

Я провел хорошее количество времени в поисках ответа здесь, но просто не могу понять это. Функция undraw() существует точно так же, как getMouse(). Но похоже, что он не работает для команды plot(), только команда draw(). Что я делаю не так? И как я могу держать окно открытым, но стереть предыдущий сюжет до того, как будет нарисован следующий?

PDF документация для функций 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

Не хватает информации ... так + Закрыть сейчас , Добавьте такие вещи, как: на каком языке? что ли? что такое 'win' и где оно определено/объявлено? – Spektre

ответ

0

Первый вопрос заключается в том, что undraw() является метод GraphicsObject, не GraphWin, так win.undraw() просто некорректно.

Вторая проблема заключается в том, что plot() - это метод настройки уровня низкого уровня, который не отслеживает, что он сделал на уровне графики Zelle, в отличие от объектов, которые нарисованы.

Однако подоплека является Tkinter, который делает следить за объектами, которые он черпает и GraphWin подкласс Canvas, так что вы можете сделать:

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

Я думаю, что ваш ответ был бы более ясным, если бы вы указали, что 'win.delete (« all »)' вызывал унаследованный метод Canvas.delete() 'и передавал ему специальный предопределенный тег' 'all" '). Люди могут не понимать, что 'GraphWin' не имеет собственного определения метода этим именем. – martineau