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
|
|
|
|