【发布时间】:2016-10-14 10:54:34
【问题描述】:
几个月前我开始使用 python 编程,我真的很喜欢它。 一开始就非常直观和有趣。
起点数据: 我有一个运行 python 3.2.3 的 linux mashine 我在 GUI 上有三个按钮来启动一个函数,一个按钮来停止该进程或进程(想法)。
来源如下:
def printName1(event):
while button5 != True
print('Button 1 is pressed')
time.sleep(3) # just for simulation purposes to get reaction time for stopping
return
print('STOP button is pressed')
def StopButton():
button5 = True
我尝试过while,并尝试使用except,但主要问题是GUI(thinter)在进程运行期间当时没有响应。它存储输入并在第一个函数 (printName1) 完成后运行它。 我也在这里查看了stackoverflow,但解决方案对我来说不能正常工作,而且他们在中断方面也有同样的问题。 我为那个(也许)基本问题道歉,但我在 python 中很新,花了几天时间搜索尝试。
有没有办法做到这一点?解决方案可以用线程来解决吗?但是怎么做? 非常感谢任何建议/帮助。
非常感谢!
【问题讨论】:
-
是的,您需要将该函数放入不同的线程中。与 GUI 在同一线程上运行的所有内容都会阻止它并阻止任何输入。 (在某些情况下,您也可以使用生成器函数来做到这一点,但一般来说线程是“必经之路”)
-
好的,非常感谢布莱恩。那么我如何从该功能开始或更具体地如何使用该线程终止功能。我不知道或不理解这将如何工作或看起来像。我可以用非常简单的语法来想象,但这似乎是有线的还是不是很明显?
-
您有几种不同的选择。对于这种情况,最简单的可能是将
printName1的整个功能移动到一个线程中。该解决方案可能并不适合所有问题,但它适用于这个问题。 Python 本身提供了一些不同的库来处理并行性,包括concurrent.future、threading 和_thread。