解决特定情况下导出方案文件名日期不对的问题

This commit is contained in:
andy
2023-10-19 23:11:44 +08:00
parent 51a2cdb11a
commit 18eb3679a1
4 changed files with 201 additions and 44 deletions

View File

@@ -93,10 +93,13 @@ class TParamLayout(QObject):
return self.__layout
class Analysis(QWidget):
data_recv_end_signal =pyqtSignal([list,list])
calc_item_end_signal =pyqtSignal([list])
def __init__(self,parent=None):
super(Analysis,self).__init__(parent)
self.setWindowTitle("检测数据分析")
self.calc_item_end_signal.connect(self.calc_item_end_slot)
self.data_recv_end_signal.connect(self.data_recv_end_slot)
self.__import_but = QPushButton("导入方案",self)
self.__import_but.clicked.connect(self.import_but_clicked)
self.__import_but.setGeometry(QRect(0,0,100,27))
@@ -109,12 +112,46 @@ class Analysis(QWidget):
self.__layout = QFormLayout()
self.__layout.addRow(' ',self.__export_but)
self.__items=[]
def add_item(self,data_dict:dict):
data=data_dict["data"]
x=data_dict["x"]
name=data_dict["name"]
max=data_dict["max"]
min=data_dict["min"]
avg=data_dict["avg"]
mid=data_dict["mid"]
std=data_dict["std"]
limit_max=data_dict["limit_max"]
limit_min=data_dict["limit_min"]
dat_count=data_dict["dat_count"]
y=data_dict["y"]
figure = QFigure(name)
figure.lable("序号","数值")
tplayout=TParamLayout()
tplayout.add_item(name+":Max",str(max))
tplayout.add_item(name+":Min",str(min))
tplayout.add_item(name+":Avg",str(avg))
tplayout.add_item(name+":Mid",str(mid))
tplayout.add_item(name+":Std",str(std))
tplayout.add_item(name+":LimitMax",str(limit_max))
tplayout.add_item(name+":LimitMin",str(limit_min))
self.__layout.addRow(figure.canvas(),tplayout.layout())
figure.draw(range(len(data)),data,lable="原始值",limit_max=limit_max,limit_min=limit_min)
figure.draw(dat_count,y,lable="权重")
figure.save(self._save_path,str(self._item_index)+".")
self.__items.append((figure,tplayout))
self._item_index+=1
def calc_item_end_slot(self,data:list):
print("calc_item end.")
widget=QWidget()
widget.setGeometry(QRect(0,0,1200,20000))
for i in data:
self.add_item(i)
widget.setLayout(self.__layout)
self.__scroll.setWidget(widget)
def addItem(self,data,name:str,params:list()):
def calc_item(self,data,name:str):
length=len(data)
if(length<1000):
print("data length too less.")
return
# 排序,从小到大
sort_list=np.sort(data)
dat_count=np.bincount(data)
@@ -139,42 +176,42 @@ class Analysis(QWidget):
# limit_min=avg-3*std
if(limit_min<0):
limit_min=0
figure = QFigure(name)
figure.lable("序号","数值")
tplayout=TParamLayout()
for i in params:
tplayout.add_item(i+":Max",str(max))
tplayout.add_item(i+":Min",str(min))
tplayout.add_item(i+":Avg",str(avg))
tplayout.add_item(i+":Mid",str(mid))
tplayout.add_item(i+":Std",str(std))
tplayout.add_item(i+":LimitMax",str(limit_max))
tplayout.add_item(i+":LimitMin",str(limit_min))
self.__layout.addRow(figure.canvas(),tplayout.layout())
figure.draw(range(len(data)),data,lable="原始值",limit_max=limit_max,limit_min=limit_min)
x=range(length)
y=np.add(range(len(dat_count)),min)
figure.draw(dat_count,y,lable="权重")
figure.save(self._save_path,str(self._item_index)+".")
self.__items.append((figure,tplayout))
self._item_index+=1
dat_struct={"name":name,"max":max,"min":min,"avg":avg,"mid":mid,"std":std,"limit_max":limit_max,
"limit_min":limit_min,"dat_count":dat_count,"y":y,"x":x,"data":data}
# self.add_item_signal.emit(dat_struct)
return dat_struct
# 连接的绘制的方法
def import_but_clicked(self):
self.sch_data=scheme_data.sch_data()
self.__import_but.setEnabled(False)
widget=QWidget()
widget.setGeometry(QRect(0,0,1200,20000))
self.titles,datas=self.sch_data.datas_sql()
if(self.titles==None):
self.__import_but.setEnabled(True)
return
self._item_index=0
self.sch_data.select_scheme()
self._save_path="file/"+self.sch_data.scheme_name.split('/')[-1].split('.')[0]
print(self._save_path)
for i in range(len(self.titles)):
self.addItem(datas[i],self.titles[i],[self.titles[i]])
widget.setLayout(self.__layout)
self.__scroll.setWidget(widget)
self.recv_data()
def recv_data(self):
self._item_index=0
def recv_data_thread(sch_data:scheme_data.sch_data):
titles,data,num=sch_data.datas_sql()
print("recv data,len=",num)
self.data_recv_end_signal.emit(titles,data)
if(num<1000):
print("data len too less.")
return
items_data=[]
for i in range(len(titles)):
a=self.calc_item(data[i],titles[i])
items_data.append(a)
self.calc_item_end_signal.emit(items_data)
t = threading.Thread(target=recv_data_thread, args=(self.sch_data,))
t.start()
def data_recv_end_slot(self,titles:list,data:list):
self.titles=titles
self.sql_data=data
print("data recv end.")
def export_but_clicked(self):
ret_limit=[]
for i,t in zip(self.__items,self.titles):