【发布时间】:2018-09-03 21:01:21
【问题描述】:
我正在尝试在一个函数中实现 root.after 以给传感器一点时间来读取,但我无法使其工作。这是我无法使其工作的功能代码:
def read_wifi():
global graph_data
try:
del graph_data
except:
pass
graph_data=np.array([0])
flag = True
while graph_data.shape[0] < 64:
while flag == True:
texto='LX'
connection.send(texto.encode())
def callback_after():
global graph_data
print('a')
graph_data=connection.recv(1024).decode()
connection.settimeout(3)
graph_data=graph_data[:-2]
graph_data=graph_data[0:]
graph_data=graph_data[:].split()
graph_data = np.nan_to_num(graph_data)
try:
graph_data = np.array([float(q) for q in graph_data])
flag = False
except:
print('Error de lectura del sensor. Reintentando leer...')
if graph_data.shape[0]<64:
print('Error de lectura del sensor. Reintentando leer...')
root.after(500,callback_after)
try:
graph_data = graph_data*m+b
except:
pass
graph_data = np.reshape(graph_data,[4,16])
如您所见,我添加了一行打印“a”,只是为了检查代码是否进入 callback_after 函数但它从未被打印,所以我认为问题出在 root.after(500,callback_after ) 行。
如果我不实现回调函数,root after 似乎可以工作,但我的 tk 窗口每次从传感器读取时都会冻结。我还尝试将 read_wifi 函数放在一个新线程中,但它一直冻结。
我希望我说清楚了。
最好的问候。
【问题讨论】:
-
为什么你的代码会退出
while flag == True:循环?你只是一直在排队root.after电话永远永远。