2011-07-13 29 views
2

目前我用wxPython编写一个GUI应用程序。 现在我想创建一个停止按钮,它将停止当前的python命令/请求/任务。创建一个像eclipse一样的终止按钮

我已经创建了一个按钮:

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

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

+0

你怎么称呼的任务吗?你必须在不同的线程中调用它来控制自己的执行。 – marc

回答

1

在GUI应用程序中,UI运行在单个main,thread。此线程初始化GUI元素并等待用户输入

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

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

TL;博士:产生一个新的线程对C/R/T

0

所有的GUI应用程序在自己的线程中运行。它们基本上是在无限循环中运行,等待用户做出可以响应的“某事”。当您在同一个线程中启动一个长时间运行的进程时,它将阻止GUI并阻止其更新。为了解决这个问题,你需要在另一个线程中运行长时间运行的进程。请参阅以下文章之一了解更多信息:

http://wiki.wxpython.org/LongRunningTasks

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

相关问题