继INCA的API开发。
上一次线程卡主线程的问题之后,又遇上了新的问题。这次AI也搞不定了。
直接上代码
def GetVeSlewButtonclik(self):
self.Vecalib = self.VEcaliblabel.get()
self.VEerrslewvalue = self.opendexp.GetCalibrationValue(self.Vecalib)
threading.Thread(target=self.GetVeslewCalibValue, daemon=True).start()
def GetVeslewCalibValue(self):
while True:
try:
print("start")#这句可以执行,到下一句代码线程退出
calibration_value = self.VEerrslewvalue.GetDoublePhysValue()#这句放在线程外可以执行,放在线程里不可以
print(str(calibration_value))
self.after(0, self.update_calibration_value, calibration_value)
time.sleep(0.5)
except Exception as e:
self.after(0, self.set_label, self.VEslewshow, str(e))
break
def update_calibration_value(self, value):
self.value_VEerrslew.set(round(value,3))
self.VEslewshow.update_idletasks()
在程序执行后,输出一个测试标记start就结束了
下一句获取标定值对象的物理值属性失败。
有趣的是,这两句:
self.Veerr = self.VEerrlabel.get()
self.VEerrvalue = self.opendexp.GetCalibrationValue(self.Veerr)
放在线程内,下面这句:
Veerr_value = self.VEerrvalue.GetDoublePhysValue()
就可以正常执行了。
抑或是把这句:
Veerr_value = self.VEerrvalue.GetDoublePhysValue()
放在线程外也可以正常执行
如下图:左边红色为可正常调运API的代码。
本想将获取API对象的的代码放在线程循环之外,以优化性能,没想到获取对象与获取对象的值这不能分离。
脑袋空空荡荡,问题奇奇怪怪
抑或是我对类的运用有问题?类下不同方法的参数传递出现了故障?
头秃
反正问题是解决哩。如有大神路过,望不吝赐教!!!