while True:
x = []
while True:
sense = 0
for i in range(0,4):
k = gpio.input(sensor)
if k = 1:
sense += 1
time.sleep(.005)
if sense == 0:
x = abc()
上面的代码片段是我用“Tkinter”制作的一个GUI,它有几个按钮(执行于,System : Raspberry Pi;OS : Fedora)。一种是让传感器运行,第二种是检测是否有物体存在。当传感器(低有效)检测到一个物体超过20个磨坊(在按下第二个按钮之后)时,它将执行abc() (这是与列表x相关的计算)。“没有GUI部分的代码工作正常”,但在引入GUI时会挂起!有人能指出这段代码中可能存在的错误吗?我已经检查了这里发布的几个问题,并做了一些更改,以检查完整代码的哪一部分导致GUI挂起,并将范围缩小到这一部分
发布于 2013-07-20 11:40:23
您有两个不断运行的循环(但我不认为第一个循环是不必要的,因为您从未中断过第二个循环)和一个对time.sleep
的调用。如果您在Tkinter线程上运行此代码,GUI将不会响应,因为该线程“繁忙”,不断执行此循环。
您可以在不同的线程上执行此命令并进行通信,甚至更好的做法是重写它,以便定期调用Tk.after
(而不是time.sleep
)来检索传感器的值,然后更新图形用户界面的内容。
https://stackoverflow.com/questions/17760321
复制相似问题