Files
python_tools/updata/select_list.py
andy eb922ee1aa udp.py 添加close函数用于关闭后台线程,
解决updata_ssh 后台线程无法正常关闭的问题
调整服务器文件列表显示,服务器文件夹显示中文别名
2023-11-05 21:05:49 +08:00

182 lines
6.8 KiB
Python

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys
# 定义转换字符
_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
# font: 25 9pt "Microsoft YaHei";
class select_list(QObject):
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;
}
"""
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)
self.file_list.setStyleSheet(self.style_sheet)
self.item_append(str_list)
def item_append(self,items:list):
for i in items:
# print("add item",i[0])
self.file_list.addItem(_tran_(i[0]))
def item_clicked(self,item:QListWidgetItem ):
self.select_item=_detran_(item.text())
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 ""
class file_list(QDialog):
def __init__(self,father:QDialog,title:str,str_list:list):
QDialog.__init__(self,father)
self.resize(1200,700)
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
self.setWindowTitle(title)
self.code_list=QTableWidget(self)
self.code_list.setObjectName(u"code_list")
self.code_list.setGeometry(QRect(5, 5, 1190, 690))
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)
self.code_list.setColumnWidth(1,160)
self.code_list.horizontalHeader().setSectionResizeMode(2,QHeaderView.ResizeMode.Fixed)
self.code_list.setColumnWidth(2,400)
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 ""
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()