2024-03-29 05:54:07 发布
网友
目前我用wxPython编写了一个GUI应用程序。 现在我想创建一个停止按钮,它将停止当前python命令/请求/任务。在
我已经创建了一个按钮:
def StopButton(self, event): sys.exit(0)
但它不起作用。:(因为我的程序没有实现点击按钮。它没有反应或响应,因为他仍然忙于当前的命令/请求/任务。在
对于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/
对于GUI应用程序,UI运行在单个线程上,通常是主线程。这个线程初始化GUI元素,并等待用户输入。在
当你在其他主线程中做那些事情时,你不能接受其他的主元素。有时候这就是你想要的:现在,不是。在
看一下Python threading,熟悉一下这些概念。您要做的是,当您启动当前命令/请求/任务时,在一个新线程中启动它,这样当您继续与GUI交互时,它可以接受用户输入。在
所有GUI应用程序都在自己的线程中运行。它们基本上是在一个无限循环中运行,等待用户做一些它可以响应的“事情”。当您在同一线程中启动一个长时间运行的进程时,它会阻塞GUI并阻止它更新。为了解决这个问题,可以在另一个线程中运行长时间运行的进程。有关详细信息,请参阅以下文章之一:
http://wiki.wxpython.org/LongRunningTasks
http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/
相关问题 更多 >
编程相关推荐