2017-05-17 22 views
1

即將到來因此,我們堅持這一點,現在變得非常絕望..我們必須使用graphics.py庫創建一個迷你程序。所以基本上我想知道的是我怎麼能像開始菜單,然後當用戶點擊..它改變到'遊戲'的不同框架本質上?使用.undraw()功能如何更改框架,但仍然使用Zelle的graphics.py使用相同的窗口?

我的朋友建議,但我不認爲,對於文本&也只是改變了.setText("")爲空字符串作爲即時通訊試圖擺脫標題&副標題的作品...這是我的代碼:

from graphics import * 
# create the window to hold the contents 
win = GraphWin("SHAPES FRENZY", 800, 500) 
win.setBackground("Black") 
#Setting the Title Page: 
title=Text(Point(400,250),"Shapes Frenzy.") 
title.draw(win) 
#Subheading 
subheading=Text(Point(400,290), "Click anywhere to continue.") 
subheading.draw(win) 

#Next Frame 
clickPoint = win.getMouse() 
if clickPoint == True: 
    title.undraw() #THIS DOESNT WORK. 
    subheading.undraw() 

#Setting up Second frame of program. 
hi=Text(Point(500,250),"Please Work.") 
hi.setFace('courier') 
hi.draw(win) 

win.getMouse() # Pause to view result 
win.close() # Close window when done 

回答

0

不要擔心 - 呼吸:)

win.getMouse()不工作,你認爲它是。你想要的是真的很喜歡這樣的:

clickPoint = win.getMouse() 
title.setText("") #THIS DOESNT WORK. 
subheading.setText("") 

win.getMouse()將返回Point對象。下面是從庫中剝離的定義:

def getMouse(self): 
    """Wait for mouse click and return Point object representing 
    the click""" 
    # gets some stuff ready 
    while self.mouseX == None or self.mouseY == None: 
     # waits for click 
    # post click code 
    return Point(x,y) 

doc字符串真說,這一切..但本質上win.getMouse()是要阻止你的計劃,因爲它會是while循環內被執行,直到點擊註冊。最後,請注意返回Point(x,y)

到底發生了什麼錯誤是......

你被分配win.getMouse的輸出win.getMouse()給一個變量。這個變量的值看起來像這樣:Point(161.0, 247.0)。所以當它擊中你的if表達式。 Python正在檢查Point(161.0, 247.0) == True。那麼,顯然它不是!所以,如果block從未被執行,那麼發生了什麼事情,並且你嘗試過的setText從來沒有運行過。

對於將來的調試,請嘗試添加print語句以確保代碼在您認爲是的時候執行:)。例如。

print("this will definitely print") 
if clickPoint == True: 
    print("Code is being run!") 
    title.undraw() #THIS DOESNT WORK. 
    subheading.undraw() 

而且您會注意到,在程序的輸出中,第二個打印語句從未發生過。

此外,如果你打開圖形庫(這是相當小,所以不太大的交易),並採取看看Text對象,你會看到,沒有爲Text類沒有定義undraw方法。有一個setText方法可用,所以我繼續使用該方法並將文本設置爲空字符串。

啊,最後一件事。由於您的if語句的目標是在用戶點擊任意位置之前保存程序,並且getMouse方法無論如何都會這樣做(直到點擊發生時才停留在while循環中),正確的做法是完全放棄if語句。

祝你好運!

+0

你剛剛救了我的生命IT作品!謝謝謝謝!!!!!!!!是的請解釋!我真的不明白。 – Rita

相關問題