创建一个类似eclips的terminatebutton

2024-03-29 05:54:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我已经创建了一个按钮:

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

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


Tags: 命令self程序event应用程序defsysexit
2条回答

对于GUI应用程序,UI运行在单个线程上,通常是主线程。这个线程初始化GUI元素,并等待用户输入。在

当你在其他主线程中做那些事情时,你不能接受其他的主元素。有时候这就是你想要的:现在,不是。在

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

tl;dr: spawn a new thread for your c/r/t

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

http://wiki.wxpython.org/LongRunningTasks

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

相关问题 更多 >