Python窗口在测试程序时立即没有响应?

时间:2013-10-24 19:54:39

标签: python user-interface window

我目前正在阅读一本书并使用PyScripter。一切都很好,直到我开始处理GUI的部分。

基本上,当我启动程序时,它立即没有响应。一部分是制作一个程序,用户点击窗口中的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 个答案:

答案 0 :(得分:1)

实际上,它并没有搞乱#39;你忘了在win.getMouse()之后输入win.close()。

答案 1 :(得分:0)

几乎可以保证,主事件循环没有运行。如何执行此操作取决于您使用的GUI工具包,但这样做是有问题的,因为一旦启动事件循环,它将接管您的控制台,直到它退出。

可能最简单的方法是切换到IPython(http://ipython.org);一旦你启动控制台,你就可以做到

%gui wx

(或qt,或者tk,或者你正在使用的任何gui工具包)它将在后台启动app循环,让你进行实验。

这使用了一个python inputhook,完全有可能从IPython中窃取该代码并在pyscripter中使用它,如果你愿意的话。可能有一种方法可以使它们一起工作,但不确定。