创建一个像eclipse一样的终止按钮

时间:2011-07-13 18:51:15

标签: python button wxpython terminate

目前我使用wxPython编写GUI应用程序。 现在我想创建一个STOP-Button,它将停止当前的python命令/ request / task。

我已经创建了一个按钮:

def StopButton(self, event):
        sys.exit(0)

但它不起作用。 :(因为我的程序没有意识到单击按钮。它没有反应或响应,因为他仍然忙于当前的命令/请求/任务。

2 个答案:

答案 0 :(得分:1)

使用GUI应用程序,UI在单个(通常是主要)线程上运行。该线程初始化GUI元素,并等待用户输入。

当您在该主线程中执行其他操作时,您的GUI元素无法接受用户输入,因为您正在忙于执行其他操作。有时这就是你想要发生的事情:现在,它不是。

查看Python threading,熟悉这些概念。您要做的是,当您启动当前命令/请求/任务时,在新线程中启动它,这样当您继续与GUI交互时,它可以接受用户输入。

  

tl; dr:为你的c / r / t

生成一个新线程

答案 1 :(得分:0)

所有GUI应用程序都在自己的线程中运行。它们基本上是在一个无限循环中运行,等待用户做一些它可以响应的“东西”。当您在同一个线程中启动长时间运行的进程时,它会阻止GUI并使其无法更新。要解决这个问题,请在另一个线程中运行长时间运行的进程。有关详细信息,请参阅以下文章之一:

http://wiki.wxpython.org/LongRunningTasks

http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/