目前我使用wxPython编写GUI应用程序。 现在我想创建一个STOP-Button,它将停止当前的python命令/ request / task。
我已经创建了一个按钮:
def StopButton(self, event):
sys.exit(0)
但它不起作用。 :(因为我的程序没有意识到单击按钮。它没有反应或响应,因为他仍然忙于当前的命令/请求/任务。
答案 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/