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

测试程序时Python窗口是否立即没有响应?,python,user-interface,window,Python,User Interface,Window,我目前正在阅读一本书并使用PyScripter。在我开始处理GUI之前,一切都很好 基本上,当我启动一个程序时,它不会立即响应。其中一部分是制作一个程序,用户在窗口中单击3个点,然后通过连接这些点生成一个三角形。一旦三角形形成,它就停止响应。因此,它会等待程序要做的事情完成,然后把事情搞砸 任何帮助都将不胜感激,谢谢 from graphics import * def main(): win = GraphWin("Draw a Triangle") win.setCoor

我目前正在阅读一本书并使用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制作了一个工具包,只是为了让初学者更容易使用。

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

处理这个问题最简单的方法可能是切换到IPython();一旦启动控制台,就可以执行以下操作

%gui wx
(或者qt,或者tk,或者您正在使用的任何gui工具包),它将在后台启动应用程序循环,允许您进行实验


这使用了一个python inputhook,如果您愿意,完全可以从IPython窃取该代码并在pyscripter中使用它。也许有办法让他们一起工作,但不确定。

事实上,这并没有“搞砸”。你只是忘了在win.getMouse()之后放win.close()。

如果需要帮助,请发布一些代码。我想教程是这样的。我在控制台中运行了您的脚本,对我来说效果很好。如果您在PyScripter中运行它,那么问题可能就出在这方面,而不是脚本本身。我不得不把文件从他的网站上删除。我通过查看文件知道它来自tk,如果这有什么区别的话。@user2912641。见我对你问题的评论。这与事件循环无关-您使用的
图形
模块工作正常。