如何解决循环开始时 Tkinter GUI 冻结
我在移动舞台并显示来自 CCD 的实时更新图像的同时从 CCD 获取数据。现场情节有效,但只要我按下开始按钮开始舞台,整个 GUI 就会冻结。我想在舞台移动时从 CCD 获取实时图像。任何帮助解决此问题将不胜感激。
循环的最少代码如下
movepos = np.linspace(startpos,endpos,Np1)
dm = movepos[1]-movepos[0]
tic = time.time()
act_pos = motor.position
def start():
global diffposvec
motor.move_to(movepos[0])
for count in range(0,Np1):
movetopos = movepos[count]
motor.move_to(movetopos)
# while motor.is_in_motion: #having this while statement makes it stop before it moves again
# toc = time.time()
# def live_spectrum2():
global framer
ax2.cla()
framer= cammer.grab_image(timeout='1s',copy=True,n_frames=1,exposure_time='5ms',cx=420,left=200,cy=600,top=300)
ax2.imshow(framer)
canvas2.draw()
canvas2.get_tk_widget().place(x=5,y=5)
# fig_plot.after(50,live_spectrum2)
# fig_plot=tk.Frame(self)
# tk.Frame(live_spectrum2()).pack()
framer = cammer.grab_image(timeout='1s',top=300)
heighter = np.shape(framer)[0]
widther = np.shape(framer)[1]
framemat = np.zeros((heighter,widther,Np1))
horzmat = np.zeros((Np1,widther))
horzmat[count,:] = np.sum(framer[300:400,:],0)
act_pos = motor.position
diffpos = movetopos-act_pos
diffposvec = []
diffposvec = np.append(diffposvec,diffpos)
if np.mod(count,10)==0:
print('Step number %.0f' % (count+1),' of %.0f' % Np1,' %.4f s' % (tic),' %.3f um' % (act_pos*1000),' %.3f um' % (movetopos*1000),' %.3f nm' % (diffpos*1e6))
start_btn=Button(self,text="START",font=(normalFont,'16'),height=36,borderless=5,foreground="#161327",background="#707087",command=lambda: start())
start_btn.place(x=350,y=650)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。