在自己的应用上,需要根据读取的 值来创建 目录与子页,并打开对应的界面
实现思路
1、定义数组 存放 {(Key value index ).....(Key_n value_n index_n )}
2、获取相关数据,存放至定义数组
3、重组数组,流程如下
4、根据新数组长度,动态创建 控件
5、执行Clear() 清空 Tree,
6、 创建目录与 子页
code 如下:
#控件创建
self.tree = QTreeWidget()
self.tree.setFixedWidth(300)
self.tree.setColumnCount(1)
self.tree.setHeaderLabels(['主目录:XXX,子目录:XXXX'])
self.tree.clicked.connect(self.onTreeClicked)
self.tree.setStyleSheet('''QTreeWidget{background-color : #272727; Color:White }''')
#逻辑部分
#获取key、value、row
self.m_key_value_row=[]
self.m_iseist=0
for i in range(len(self.m_root_list)):
self.m_iseist = 0
#如果当前行不在缓存,存储数据
for n in range(len(self.m_key_value_row)):
if str(i) == str(self.m_key_value_row[n][2]):
self.m_iseist = 1
if self.m_iseist == 0:
self.m_key_value_row.append((self.m_root_list[i][0],self.m_root_list[i][1],i))
self.m_iseist = 0
for j in range(len(self.m_root_list)):
if self.m_root_list[i][0] == self.m_root_list[j][0] and self.m_root_list[i][1] != self.m_root_list[j][1] : #key相同,且value不同,
for m in range(len(self.m_key_value_row)):
if str(j) ==str(self.m_key_value_row[m][2]): #且行没有被记录
self.m_iseist = 1
if self.m_iseist == 0:
self.m_key_value_row.append((self.m_root_list[i][0], self.m_root_list[j][1], j))
#print(self.m_key_value_row)
#动态创建目录\子页
self.m_root_list = []
self.m_child_list =[]
for i in range(len(self.m_key_value_row)):
self.m_root_list.append("self.m_root"+str(i))
self.m_child_list.append("self.m_child" + str(i))
#目录
self.tree.clear() #清空Tree
m_root_histroy=[] #记录已创建的主目录
history_flag =0
history_keyIndex =0
for i in range(len(self.m_key_value_row)):
#如果主目录不在历史中,则创建
history_flag = 0
history_keyIndex = 0
for j in range(len(m_root_histroy)):
if self.m_key_value_row[i][0] == m_root_histroy[j]: #当前key 存在历史key
history_flag=1
history_keyIndex = j
m_root_histroy.append(self.m_key_value_row[i][0])
if history_flag==0: #如果主目录不在历史中,则创建主目录,并创建子页
self.m_root_list[i] = QTreeWidgetItem(self.tree)
self.m_root_list[i].setText(0, str(self.m_key_value_row[i][0]))
self.m_child_list[i] = QTreeWidgetItem(self.m_root_list[i])
self.m_child_list[i].setText(0, "●"+self.m_key_value_row[i][1])
else: #如果主目录在历史中,则绑定子页
self.m_child_list[i] = QTreeWidgetItem(self.m_root_list[history_keyIndex])
self.m_child_list[i].setText(0, "●"+self.m_key_value_row[i][1])