| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  | from PyQt5.QtCore import * | 
					
						
							|  |  |  | from PyQt5.QtGui import * | 
					
						
							|  |  |  | from PyQt5.QtWidgets import * | 
					
						
							| 
									
										
										
										
											2023-11-01 17:58:32 +08:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-05 21:05:49 +08:00
										 |  |  | # 定义转换字符 | 
					
						
							|  |  |  | _TRAN_TABLE=[ | 
					
						
							|  |  |  |     ("checker_dtb","设备树文件"), | 
					
						
							|  |  |  |     ("checker_gen1_app","一代批检仪/赋码仪主板程序"), | 
					
						
							|  |  |  |     ("checker_gen1_boot","一代批检仪/赋码仪主板boot程序"), | 
					
						
							|  |  |  |     ("checker_host_app","自研批检仪/赋码仪主板程序"), | 
					
						
							|  |  |  |     ("checker_m4","自研批检仪/赋码仪协处理器程序"), | 
					
						
							|  |  |  |     ("checker_slave_app","自研批检仪/赋码仪小板程序"), | 
					
						
							|  |  |  |     ("checker_slave_app_can","自研批检仪/赋码仪小板程序CAN总线"), | 
					
						
							|  |  |  |     ("checker_slave_app_uart","自研批检仪/赋码仪小板程序串口总线"), | 
					
						
							|  |  |  |     ("checker_slave_boot_can","自研批检仪/赋码仪小板boot程序CAN总线"), | 
					
						
							|  |  |  |     ("checker_slave_boot_uart","自研批检仪/赋码仪小板boot程序串口总线"), | 
					
						
							|  |  |  |     ("coder_stm32f1_app","手动线赋码控制器主板程序"), | 
					
						
							|  |  |  |     ("coder_stm32f1_boot","手动线赋码控制器主板boot程序"), | 
					
						
							|  |  |  |     ("daemon","自研批检仪/赋码仪守护进程"), | 
					
						
							|  |  |  |     ("jqcoder_slave_app","一代赋码仪小板程序"), | 
					
						
							|  |  |  |     ("judge","判定脚本"), | 
					
						
							|  |  |  |     ("scheme","检测方案"), | 
					
						
							|  |  |  |     ("test_data","测试数据"), | 
					
						
							|  |  |  | ] | 
					
						
							|  |  |  | def _tran_(text:str): | 
					
						
							|  |  |  |     for i in _TRAN_TABLE: | 
					
						
							|  |  |  |         if(i[0]==text): | 
					
						
							|  |  |  |             return i[1] | 
					
						
							|  |  |  |     return text | 
					
						
							|  |  |  | def _detran_(text:str): | 
					
						
							|  |  |  |     for i in _TRAN_TABLE: | 
					
						
							|  |  |  |         if(i[1]==text): | 
					
						
							|  |  |  |             return i[0] | 
					
						
							|  |  |  |     return text | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-22 18:26:14 +08:00
										 |  |  | #         font: 25 9pt "Microsoft YaHei"; | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class select_list(QObject): | 
					
						
							| 
									
										
										
										
											2023-09-22 18:26:14 +08:00
										 |  |  |     style_sheet ="""
 | 
					
						
							|  |  |  |         QListView { | 
					
						
							|  |  |  |         font: 25 9pt; | 
					
						
							|  |  |  |         border: 15px solid white; | 
					
						
							|  |  |  |         border-radius: 10px; | 
					
						
							|  |  |  |         show-decoration-selected: 1; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         QListView::item { | 
					
						
							|  |  |  |             height: 40px; | 
					
						
							|  |  |  |         }         | 
					
						
							|  |  |  |         QListView::item:hover { | 
					
						
							|  |  |  |             background-color: transparent; | 
					
						
							|  |  |  |             padding: 10px; | 
					
						
							|  |  |  |             border-left: 3px solid rgb(130, 130, 130); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         QListView::item:selected { | 
					
						
							|  |  |  |             background-color: transparent; | 
					
						
							|  |  |  |             color: black; | 
					
						
							|  |  |  |             padding: 10px; | 
					
						
							|  |  |  |             border-left: 3px solid black; | 
					
						
							|  |  |  |         }         | 
					
						
							|  |  |  |         """    
 | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  |     def __init__(self,father:QDialog,title:str,str_list:list): | 
					
						
							|  |  |  |         QObject.__init__(self) | 
					
						
							|  |  |  |         self.w=QDialog(father) | 
					
						
							|  |  |  |         self.w.resize(800,400) | 
					
						
							|  |  |  |         self.w.setWindowTitle(title) | 
					
						
							|  |  |  |         self.w.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) | 
					
						
							|  |  |  |         self.w.setWindowModality(Qt.WindowModality.ApplicationModal) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.file_list = QListWidget(self.w) | 
					
						
							|  |  |  |         self.file_list.setObjectName(u"str_list") | 
					
						
							|  |  |  |         self.file_list.setGeometry(QRect(20, 20, 760, 360)) | 
					
						
							|  |  |  |         self.file_list.setFrameShape(QFrame.Shape.Box) | 
					
						
							|  |  |  |         self.file_list.setMidLineWidth(1) | 
					
						
							|  |  |  |         self.file_list.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAsNeeded) | 
					
						
							|  |  |  |         self.file_list.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection) | 
					
						
							|  |  |  |         self.file_list.itemDoubleClicked.connect(self.item_clicked) | 
					
						
							| 
									
										
										
										
											2023-09-22 18:26:14 +08:00
										 |  |  |         self.file_list.setStyleSheet(self.style_sheet) | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  |         self.item_append(str_list) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def item_append(self,items:list): | 
					
						
							|  |  |  |         for i in items: | 
					
						
							|  |  |  |             # print("add item",i[0]) | 
					
						
							| 
									
										
										
										
											2023-11-05 21:05:49 +08:00
										 |  |  |             self.file_list.addItem(_tran_(i[0])) | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  |     def item_clicked(self,item:QListWidgetItem ): | 
					
						
							| 
									
										
										
										
											2023-11-05 21:05:49 +08:00
										 |  |  |         self.select_item=_detran_(item.text()) | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  |         self.w.done(QDialog.DialogCode.Accepted) | 
					
						
							|  |  |  |         self.w.close() | 
					
						
							|  |  |  |     def show(self): | 
					
						
							|  |  |  |         # self.w.show() | 
					
						
							|  |  |  |         if(self.w.exec()==QDialog.DialogCode.Accepted): | 
					
						
							|  |  |  |             # print(self.select_item) | 
					
						
							|  |  |  |             return self.select_item | 
					
						
							|  |  |  |         return "" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-01 17:58:32 +08:00
										 |  |  | class file_list(QDialog): | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-01 17:58:32 +08:00
										 |  |  |     def __init__(self,father:QDialog,title:str,str_list:list): | 
					
						
							|  |  |  |         QDialog.__init__(self,father) | 
					
						
							| 
									
										
										
										
											2023-11-05 21:05:49 +08:00
										 |  |  |         self.resize(1200,700) | 
					
						
							| 
									
										
										
										
											2023-11-01 17:58:32 +08:00
										 |  |  |         self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose) | 
					
						
							|  |  |  |         self.setWindowTitle(title) | 
					
						
							|  |  |  |         self.code_list=QTableWidget(self) | 
					
						
							|  |  |  |         self.code_list.setObjectName(u"code_list") | 
					
						
							| 
									
										
										
										
											2023-11-05 21:05:49 +08:00
										 |  |  |         self.code_list.setGeometry(QRect(5, 5, 1190, 690)) | 
					
						
							| 
									
										
										
										
											2023-11-01 17:58:32 +08:00
										 |  |  |         self.code_list.setColumnCount(4) | 
					
						
							|  |  |  |         self.code_list.setHorizontalHeaderLabels(list(["ID","上传时间","文件名","描述"])) | 
					
						
							|  |  |  |         self.code_list.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch) | 
					
						
							|  |  |  |         self.code_list.horizontalHeader().setSectionResizeMode(0,QHeaderView.ResizeMode.Fixed) | 
					
						
							|  |  |  |         self.code_list.setColumnWidth(0,50) | 
					
						
							|  |  |  |         self.code_list.horizontalHeader().setSectionResizeMode(1,QHeaderView.ResizeMode.Fixed) | 
					
						
							| 
									
										
										
										
											2023-11-05 21:05:49 +08:00
										 |  |  |         self.code_list.setColumnWidth(1,160) | 
					
						
							| 
									
										
										
										
											2023-11-01 17:58:32 +08:00
										 |  |  |         self.code_list.horizontalHeader().setSectionResizeMode(2,QHeaderView.ResizeMode.Fixed) | 
					
						
							| 
									
										
										
										
											2023-11-05 21:05:49 +08:00
										 |  |  |         self.code_list.setColumnWidth(2,400) | 
					
						
							| 
									
										
										
										
											2023-11-01 17:58:32 +08:00
										 |  |  |         self.code_list.setSelectionBehavior( QAbstractItemView.SelectionBehavior.SelectRows) | 
					
						
							|  |  |  |         self.code_list.cellDoubleClicked.connect(self.cell_clicked) | 
					
						
							|  |  |  |         self.backcolor=True | 
					
						
							|  |  |  |         for i in str_list: | 
					
						
							|  |  |  |             self.list_add(i[0]) | 
					
						
							|  |  |  |         # 添加数据 | 
					
						
							|  |  |  |     def list_add(self,text:str): | 
					
						
							|  |  |  |         stat=self.backcolor | 
					
						
							|  |  |  |         self.backcolor=not self.backcolor | 
					
						
							|  |  |  |         if(stat==True): | 
					
						
							|  |  |  |             bkcolor=QColor() | 
					
						
							|  |  |  |             bkcolor.setRgb(230,230,230,255) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             bkcolor=QColor() | 
					
						
							|  |  |  |             bkcolor.setRgb(255,255,255,255) | 
					
						
							|  |  |  |         code_strs=text.split("|") | 
					
						
							|  |  |  |         if(len(code_strs)>=4): | 
					
						
							|  |  |  |             code_strs[3],line=self.split_line(code_strs[3]) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             code_strs.append("") | 
					
						
							|  |  |  |             line=1 | 
					
						
							|  |  |  |         RowCont=self.code_list.rowCount() | 
					
						
							|  |  |  |         self.code_list.insertRow(RowCont) | 
					
						
							|  |  |  |         for i in range(len(code_strs)): | 
					
						
							|  |  |  |             self.code_list.setItem(RowCont,i,QTableWidgetItem(code_strs[i])) | 
					
						
							|  |  |  |             self.code_list.item(RowCont,i).setBackground(bkcolor) | 
					
						
							|  |  |  |             self.code_list.setRowHeight(RowCont,line*30) | 
					
						
							|  |  |  |             # self.code_list.resizeRowsToContents() | 
					
						
							|  |  |  |     def split_line(self,text:str): | 
					
						
							|  |  |  |         s='' | 
					
						
							|  |  |  |         line=(len(text)+29)//30 | 
					
						
							|  |  |  |         for i in range(line): | 
					
						
							|  |  |  |             s+=text[i*30:(i+1)*30] | 
					
						
							|  |  |  |             s+='\n' | 
					
						
							|  |  |  |         return s.strip(),line | 
					
						
							|  |  |  |     def cell_clicked(self,x:int,y:int ): | 
					
						
							|  |  |  |         print("cell_clicked",x,y) | 
					
						
							|  |  |  |         str_list=[] | 
					
						
							|  |  |  |         for i in range(3): | 
					
						
							|  |  |  |             str_list.append(self.code_list.item(x,i).text()) | 
					
						
							|  |  |  |         self.select_item='|'.join(str_list) | 
					
						
							|  |  |  |         self.done(QDialog.DialogCode.Accepted) | 
					
						
							|  |  |  |         self.close() | 
					
						
							|  |  |  |     def show(self): | 
					
						
							|  |  |  |         if(self.exec()==QDialog.DialogCode.Accepted): | 
					
						
							|  |  |  |             print(self.select_item) | 
					
						
							|  |  |  |             return self.select_item | 
					
						
							|  |  |  |         return "" | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-01 17:58:32 +08:00
										 |  |  | if __name__=='__main__': | 
					
						
							|  |  |  |     app = QApplication(sys.argv) | 
					
						
							|  |  |  |     l=[ | 
					
						
							|  |  |  |         '1|2023-11-01 11:11:00|dddddddd|测试文字,测试文字,测试文字,测试文字,测试文字,测试文字,测试文字,测试文字,测试文字,测试文字,测试文字,测试文字,测试文字,测试文字, 测试文字,测试文字,测试文字,', | 
					
						
							|  |  |  |         '2|sssssss|dddddddd|sssssssss', | 
					
						
							|  |  |  |         '3|sssssss|dddddddd|sssssssss', | 
					
						
							|  |  |  |         '4|sssssss|dddddddd|sssssssss', | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     dlg=file_list(father=None, title="测试窗口",str_list=l) | 
					
						
							|  |  |  |     dlg.show() | 
					
						
							|  |  |  |     # app.exec() | 
					
						
							| 
									
										
										
										
											2023-09-15 10:53:44 +08:00
										 |  |  | 
 |