0

这是使用 John Zelle 的 Python 3.5.2 的代码问题graphics.py

我花了很多时间在这里寻找答案,但就是想不通。该函数的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'
4

1 回答 1

1

第一个问题是那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
于 2017-01-06T22:25:36.757 回答