def sql_select(self): self.itemidlist = [] self.nolist = [] sql = 'select * from [ICItem]' # 实例化数据库连接查询类 ICItem_date = Select_Table() # 使用select_access方法获取数据库表中所有数据的二维列表 self.ICItemdata = ICItem_date.select_access(sql) ICItem_date.close_odbc() # 循环获取了上级组ID列表和代码列表 for i in self.ICItemdata: self.itemidlist.append(i[3]) self.nolist.append(i[1]) # 将读取的数据使用双循环构建出树结构 def add_group(self): # 为树对象建立第一个根分类 # 注意,数据库中必须同时初始化出第一条相同的数据,且interid必须为1 # 实例化第一个树节点,也是根节点 self.ICItemdata[0][4] = QtWidgets.QTreeWidgetItem(self.tree_ICItem) # 给根节点设置代码和名称(列数在QtDesigner中已设置) self.ICItemdata[0][4].setText(0, 'ALL') self.ICItemdata[0][4].setText(1, '所有商品') # 设置第0列的列宽 self.tree_ICItem.setColumnWidth(0, 120) # 开始循环除根节点的数据二维表 for i in self.ICItemdata[1:]: for j in self.ICItemdata: # j[0] == i[3]实际就是在因为根节点已被实例化,所以可以作为其他字符串的基类从根开始往下持续实例化,否则读取的数据作为 # 字符串变量即使名称相同也是不能被直接当做上级类去实例化其他对象的 if j[0] == i[3]: i[4] = QtWidgets.QTreeWidgetItem(j[4]) i[4].setText(0, str(i[1])) i[4].setText(1, str(i[2]))
UI界面使用QtDesigner制作,这是类中的两个方法,没有用递归,请留言交流!