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,它有几个按钮(Executed on,System:Raspberry Pi; OS:Fedora)。一个是传感器运行,第二个是检测物体是否存在。当传感器(低电平有效)检测到一个物体超过20毫秒时(按下第二个按钮后),它将执行abc()(这是与列表x相关的计算)。 “没有GUI部分的代码工作得很好”但是在引入GUI时会挂起! 有人可以指出这段代码中的任何潜在错误吗? 我已经在这里发布了一些问题,并做了一些更改,以检查完整代码的哪一部分使GUI挂起,并将其缩小到这部分
答案 0 :(得分:0)
你有两个循环不断运行(但我不认为第一个循环不是必需的,因为你永远不会破坏第二个循环)和对time.sleep
的调用。如果在Tkinter线程上运行此代码,GUI将无响应,因为线程“忙”,不断执行此循环。
您可以在不同的线程上执行此操作并进行通信,甚至更好地重写它,以便您可以定期调用Tk.after
(而不是time.sleep
)来检索传感器的值,然后更新GUI的内容。