0

我想编写一个 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 图形模块来做到这一点

4

1 回答 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()
于 2017-01-16T04:10:47.907 回答