2013-10-24 44 views
2

我目前正在閱讀一本書並使用PyScripter。在我開始處理GUI的部分之前,一切都很好。Python窗口在測試程序時立即沒有響應?

基本上,當我啓動一個程序時,它立即不響應。一部分是製作一個程序,用戶在窗口中點擊3個點,然後從連接點開始形成一個三角形。三角形一旦製成就會停止響應。所以它等待程序意圖做的任何事情,然後搞砸。

任何幫助,將不勝感激,謝謝。

from graphics import * 


def main(): 
    win = GraphWin("Draw a Triangle") 
    win.setCoords(0.0, 0.0, 10.0, 10.0) 
    message = Text(Point(5, 0.5), "Click on three points") 
    message.draw(win) 

    p1 = win.getMouse() 
    p1.draw(win) 
    p2 = win.getMouse() 
    p2.draw(win) 
    p3 = win.getMouse() 
    p3.draw(win) 

    triangle = Polygon(p1,p2,p3) 
    triangle.setFill("peachpuff") 
    triangle.setOutline("cyan") 
    triangle.draw(win) 

    message.setText("click anywhere to quit") 
    win.getMouse() 

main() 

編輯:用代碼更新。就像我之前說的,我正在閱讀的這本書的作者在tk上製作了一個工具包,以便讓初學者更容易。

+2

張貼一些代碼,如果你想得到一些幫助。 – Jeff

+0

我假設該教程是[Hands On Python](http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/graphics.html)。我在控制檯中運行了腳本,對我來說工作正常。如果你在PyScripter中運行它,那麼問題可能就在於此,而不是腳本本身。 – ekhumoro

回答

0

差不多保證,主事件循環沒有運行。你如何做到這一點取決於你正在使用的GUI工具包,但這樣做是有問題的,因爲一旦你開始事件循環,它將接管你的控制檯直到它退出。

可能最簡單的方法是切換到IPython(http://ipython.org);一旦你啓動控制檯,你可以做

%gui wx 

(或QT,或tK,或任何GUI工具包您使用),它會在後臺啓動應用程序循環,讓您嘗試。

這使用了一個python inputhook,並且完全可以從IPython中竊取該代碼並在pyscripter中使用它,如果你願意的話。可能有辦法讓他們一起工作,不確定。

+0

該工具包實際上是由書籍作者放在一起的一個小工具包。我不得不將DL文件從他的網站上刪除。我知道通過文件查看,但它來自tk,如果這有什麼區別。 – user2912641

+0

@ user2912641。看到我對你的問題的評論。這與事件循環無關 - 您使用的「圖形」模塊正常工作。 – ekhumoro

1

其實它並沒有'搞砸'。你只是在win.getMouse()之後忘了放win.close()。