目前我用wxPython编写一个GUI应用程序。 现在我想创建一个停止按钮,它将停止当前的python命令/请求/任务。创建一个像eclipse一样的终止按钮
我已经创建了一个按钮:
def StopButton(self, event):
sys.exit(0)
但它不工作。 :(因为我的程序没有意识到点击按钮,它没有反应或响应,因为他仍然忙于当前的命令/请求/任务。
目前我用wxPython编写一个GUI应用程序。 现在我想创建一个停止按钮,它将停止当前的python命令/请求/任务。创建一个像eclipse一样的终止按钮
我已经创建了一个按钮:
def StopButton(self, event):
sys.exit(0)
但它不工作。 :(因为我的程序没有意识到点击按钮,它没有反应或响应,因为他仍然忙于当前的命令/请求/任务。
在GUI应用程序中,UI运行在单个main,thread。此线程初始化GUI元素并等待用户输入
当您在该主线程中执行其他操作时,您的GUI元素无法接受用户输入,因为您忙于做其他事情。这是你想要发生的事情:现在,它不是。
看看Python threading,并熟悉这些概念。你想要做的是,当你开始你的当前命令/请求/任务,在一个新线程中启动它,这样当你继续与GUI交互时,它可以接受用户输入。
TL;博士:产生一个新的线程对C/R/T
所有的GUI应用程序在自己的线程中运行。它们基本上是在无限循环中运行,等待用户做出可以响应的“某事”。当您在同一个线程中启动一个长时间运行的进程时,它将阻止GUI并阻止其更新。为了解决这个问题,你需要在另一个线程中运行长时间运行的进程。请参阅以下文章之一了解更多信息:
http://wiki.wxpython.org/LongRunningTasks
http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/
你怎么称呼的任务吗?你必须在不同的线程中调用它来控制自己的执行。 – marc