2014-04-23 42 views
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圖形模塊來執行此操作

+0

你可以嘗試迭代之前畫放在'p.draw(贏) '在for循環之前。儘管我的機器沒有嘗試過。 – korefn

+0

這裏是[使用Tkinter的代碼示例](https://gist.github.com/zed/11204815) – jfs

回答

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()