如何避免“当前绘制的对象”错误?
我想写一个Python程序,可以在图形窗口里显示一个字母。如果我点击窗口的右边,字母就变成红色;如果我点击左边,它就变成绿色。这个功能至少要能用五次。我写的代码只能变两次颜色,然后就出现了“graphics.GraphicsError: Object currently drawn”的错误。有没有什么办法解决这个问题?
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
问题出在 p.draw(win)
这个调用的位置,就像 @korefn 提到的那样。不过,这样改动后,'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()