如何避免“当前绘制对象”错误?

时间:2014-04-23 04:33:22

标签: python zelle-graphics

我想编写一个Python程序,它将在图形窗口中显示一个字母。如果我单击窗口的右侧,文本需要变为红色,如果我单击左侧,则需要变为绿色。它需要至少工作五次。我写下以下哪个更改颜色只有两次,然后给我“graphics.GraphicsError:当前绘制的对象”。知道如何解决这个问题吗?

from graphics import *

def main():
    win= GraphWin("Name",400,400)
    win.setCoords(0.0,0.0,4.0,4.0)
    win.setBackground("white")
    p=Text(Point(2.0,2.0),'B')
    p.setSize(36)
    for i in  range(0,6): 
        c=win.getMouse()
        s=c.getX()

       if s>=2 :

           p.setTextColor("Red")
       else:
           p.setTextColor("Green")

       p.draw(win)
 main()

我是新手。我用zelle图形模块来做这个

1 个答案:

答案 0 :(得分:0)

问题是@korefn建议的p.draw(win)电话的位置。但是,与原始代码不同,此更改会在第一次单击之前显示“B”。我在下面的返工中添加了一些注释掉的代码,这些代码会使'B'与背景颜色相同,直到点击为止:

from graphics import *

def main():
    win = GraphWin('Mouse Test', 400, 400)
    win.setCoords(0.0, 0.0, 4.0, 4.0)

    anchorPoint = Point(2.0, 2.0)

    text = Text(anchorPoint, 'B')
    text.setSize(36)  # maximum legal size
    # text.setTextColor('white')  # optional initial invisibility
    text.draw(win)

    for _ in range(6):
        point = win.getMouse()

        if point.getX() >= anchorPoint.getX():
            text.setTextColor('red')
        else:
            text.setTextColor('green')

    win.close()

main()