def click_ActiveFairyComboboxItem(self,i): #当点击已激活精灵复选框内容时执行的函数 # 显示点击的精灵的信息 fairyID = self.ActiveFairyComboBox.currentText() if(fairyID =="已激活的精灵"): self.defaultUi() else: self.fairyInfoShow(fairyID) # 已激活精灵复选框选项刷新 self.reflashActiveFairyComboBox() # 选中并展开TreeWidget对应项 item = QTreeWidgetItemIterator(self.treeWidget)# 获取一个迭代器 # 利用迭代器遍历TreeWidget,找被选中的精灵,然后在TreeWidget展开、选中 while(item.value()): if(item.value().text(0)==fairyID): self.treeWidget.expandItem(item.value()) item.value().child(0).setSelected(True) break else: item.value().setSelected(False) item.__iadd__(1) # 迭代器位置+1
def findParentWidget(self, findOrder=None): '''scan the tree and find the treeviewwidget with the matching parentOrder''' # if the find id is None then this is the root so return the tree view itself if findOrder is None: return self.tvPath # find the parent tree view widget parentWidget = None # iterate through the treeview tvPathIterator = QTreeWidgetItemIterator( self.tvPath, flags=QTreeWidgetItemIterator.All) while tvPathIterator: if not tvPathIterator.value() is None: queryPathNodeItem = tvPathIterator.value() queryPathNodeDict = queryPathNodeItem.data(0, Qt.UserRole).dict() order = queryPathNodeDict.get("order", 0) # save the value for order if it's greater if order == findOrder: parentWidget = queryPathNodeItem break tvPathIterator.__iadd__(1) else: break return parentWidget
def findParentWidget(self, findID=None): '''scan the tree and find the treeviewwidget with the matching parentOrder''' # if the find id is None then this is the root so return the tree view itself if findID is None: return self.tvOutline # find the parent tree view widget parentWidget = None # iterate through the treeview tvOutlineIterator = QTreeWidgetItemIterator(self.tvOutline, flags = QTreeWidgetItemIterator.All) while tvOutlineIterator: if not tvOutlineIterator.value() is None: # get the treeview widget tvWidget = tvOutlineIterator.value() # get the form item object from the widget formItem = tvWidget.data(0, Qt.UserRole) # get the idNum of the form item object idNum = formItem.itemDict["idNum"] # check to see if this is the idNum we're looking for if idNum == findID: parentWidget = tvWidget break tvOutlineIterator.__iadd__(1) else: break return parentWidget
def actionClick(self, txt): if not txt: return p = ''.join((r'.*', txt, r'.*')) obj = re.compile(p) cursor = QTreeWidgetItemIterator(self.treeWidget) while cursor.value(): item = cursor.value() if item is not self.treeWidget._rootItem: item.setExpanded(False) item.setSelected(False) cursor = cursor.__iadd__(1) cursor = QTreeWidgetItemIterator(self.treeWidget) while cursor.value(): item = cursor.value() if item is self.treeWidget._rootItem: cursor = cursor.__iadd__(1) continue if item.parent() is self.treeWidget._rootItem: cursor = cursor.__iadd__(1) continue itemtext = item.text(0) if obj.match(itemtext): self.ChangeParentExpanded(item) item.setSelected(True) cursor = cursor.__iadd__(1)
def validate(self): if self.objectDict is None: self.objectDict = {} templateName = self.txtPathTemplateName.text() # template name if self.helper.NoTextValueError(templateName, "Must enter a Path Template Name"): self.txtPathTemplateName.setFocus() return False # find duplicate cypher variables varList = [] # iterate through the treeview tvPathIterator = QTreeWidgetItemIterator( self.tvPath, flags=QTreeWidgetItemIterator.All) returnCount = 0 while tvPathIterator: if not tvPathIterator.value() is None: queryPathNodeItem = tvPathIterator.value() thisQueryPathNode = queryPathNodeItem.data(0, Qt.UserRole) if thisQueryPathNode.type in ["Node", "Relationship"]: returnCount = returnCount + thisQueryPathNode.numReturnProps( ) if returnCount < 1: self.helper.displayErrMsg( thisQueryPathNode.templateName, "Must return at least one property.") return False if self.helper.NoTextValueError( thisQueryPathNode.templateName, "Must supply a template name."): return False if self.helper.NoTextValueError( thisQueryPathNode.cypherVar, "Must supply a cypher variable for {}.".format( thisQueryPathNode.templateName)): return False if thisQueryPathNode.cypherVar in varList: self.helper.displayErrMsg( "Validate Path", "Error - duplicate cypher variable {} defined in template: {} " .format(thisQueryPathNode.cypherVar, thisQueryPathNode.templateName)) return False if thisQueryPathNode.templateName == "No Template Selected" and thisQueryPathNode.blankTemplate == False: self.helper.displayErrMsg( "Validate Path", "Error - must select a template or set blank template to True " ) return False varList.append(thisQueryPathNode.cypherVar) tvPathIterator.__iadd__(1) else: break # passed all edits so return True return True
def tree_pr_checked(self, tree, txt_item): print(tree) iterator = QTreeWidgetItemIterator(tree) while iterator.value(): item = iterator.value() if txt_item == item.text(0) and item.checkState(0) == False: return False iterator.__iadd__(1) return True
def select_all(self): currentTopLevelItemIndex = 0 it = QTreeWidgetItemIterator(self.productTree) while it.value(): if it.value() is self.productTree.topLevelItem(currentTopLevelItemIndex): currentTopLevelItemIndex += 1 if it.value().checkState(0) == Qt.Checked: for _ in range(it.value().childCount()): it = it.__iadd__(1) it.value().setCheckState(0, Qt.Checked) it = it.__iadd__(1)
def get_data(self): iter = QTreeWidgetItemIterator(self) while iter.value(): item = iter.value() if hasattr(item, 'x') and hasattr(item, 'k'): if item.checkState(0) == Qt.Checked: self.tree_data[item.k][item.x] = True else: self.tree_data[item.k][item.x] = False iter.__iadd__(1) return self.tree_data
def on_QCheckBox_PR_Change(self, state): iterator = QTreeWidgetItemIterator(self.botleft) while iterator.value(): item = iterator.value() iterator.__iadd__(1) if state == Qt.Checked: item.setCheckState(0, Qt.Checked) else: item.setCheckState(0, Qt.Unchecked)
def dump_prnr(self): '''从PR号树中,提取PRNR订单''' str_prnr_order = '' iterator = QTreeWidgetItemIterator(self.botleft) while iterator.value(): item = iterator.value() if item.checkState(0) and (item.childCount() == 0): str_prnr_order += item.text(0) + ' ' iterator.__iadd__(1) #去掉首尾空格或者',' str_prnr_order = str_prnr_order.strip(' ') str_prnr_order = str_prnr_order.strip(',') self.textEdit.setPlainText(str_prnr_order)
def getMaxTreeOrder(self, ): '''scan the tree and find the max itemNum attribute. This is used to increment and create the next highest item number''' max = 0 # iterate through the treeview tvPathIterator = QTreeWidgetItemIterator(self.tvOutline, flags = QTreeWidgetItemIterator.All) while tvPathIterator: if not tvPathIterator.value() is None: formTVItem = tvPathIterator.value() formItem = formTVItem.data(0, Qt.UserRole) # save the value for order if it's greater if formItem.itemDict["idNum"] > max: max = formItem.itemDict["idNum"] tvPathIterator.__iadd__(1) else: break return max
def getMaxTreeOrder(self, ): '''scan the tree and find the max order attribute. This is used to increment and create the next highest order number''' max = 0 # iterate through the treeview tvPathIterator = QTreeWidgetItemIterator( self.tvPath, flags=QTreeWidgetItemIterator.All) while tvPathIterator: if not tvPathIterator.value() is None: queryPathNodeItem = tvPathIterator.value() queryPathNodeDict = queryPathNodeItem.data(0, Qt.UserRole).dict() order = queryPathNodeDict.get("order", 0) # save the value for order if it's greater if order > max: max = order tvPathIterator.__iadd__(1) else: break return max
def okClicked(self): # 遍历树控件节点 cursor = QTreeWidgetItemIterator(self.treeWidget) lst = [] while cursor.value(): item = cursor.value() if item.checkState(1) == Qt.Checked: lst.append(item.key) cursor = cursor.__iadd__(1) self.selectItemChanged.emit(lst) self.Dialog.close()
def treelist_genseqbutton_click(self): """Generate Sequence.""" item = QTreeWidgetItemIterator( self.maintabwidget.tab_classify.treelist) MRHPROJECT.refseq = [] while item.value(): if item.value().text(2): rid = int(item.value().text(2)) MRHPROJECT.refseq.append(rid) item = item.__iadd__(1) self.treelist_show()
def apply(self): '''save the object dictionary''' formItemList = [] # iterate through the treeview tvOutlineIterator = QTreeWidgetItemIterator(self.tvOutline, flags = QTreeWidgetItemIterator.All) while tvOutlineIterator: if not tvOutlineIterator.value() is None: # get the treeview widget tvWidget = tvOutlineIterator.value() # get the form item object from the widget formDefItem = tvWidget.data(0, Qt.UserRole) if formDefItem.itemDict["type"] == "Form": self.objectDict["name"] = formDefItem.itemDict["itemName"] self.objectDict["description"] = formDefItem.itemDict["description"] formItemList.append(formDefItem.dict()) tvOutlineIterator.__iadd__(1) else: break self.objectDict["formOutline"] = formItemList self.designModel.setModelDirty()
def apply(self, ): '''save the object dictionary''' self.objectDict["name"] = self.txtPathTemplateName.text() self.objectDict["description"] = self.editDescription.toPlainText() nodeList = [] # iterate through the treeview tvPathIterator = QTreeWidgetItemIterator( self.tvPath, flags=QTreeWidgetItemIterator.All) while tvPathIterator: if not tvPathIterator.value() is None: # print("save node {}".format(tvPathIterator.value().text(0))) queryPathNodeItem = tvPathIterator.value() queryPathNodeDict = queryPathNodeItem.data(0, Qt.UserRole).dict() nodeList.append(queryPathNodeDict) tvPathIterator.__iadd__(1) else: break self.objectDict["queryPath"] = nodeList self.designModel.setModelDirty()
def inject_prnr(self): '''向PR号树中,注入PRNR订单''' str_prnr_order = self.textEdit.toPlainText() str_prnr_order = str_prnr_order.strip(' ') str_prnr_order = str_prnr_order.strip(',') lst_prnr_oder = [] if len(str_prnr_order): str_prnr_order = str_prnr_order.upper() if ', ' in str_prnr_order: lst_prnr_oder = str_prnr_order.split(', ') elif ',' in str_prnr_order: lst_prnr_oder = str_prnr_order.split(',') elif ' ' in str_prnr_order: lst_prnr_oder = str_prnr_order.split(' ') elif len(str_prnr_order) == 3: #只有一个PR号 lst_prnr_oder.append(str_prnr_order) if len(lst_prnr_oder): # 清除 PR 树中已经选中的所有项目 iterator = QTreeWidgetItemIterator(self.botleft) while iterator.value(): item = iterator.value() item.setCheckState(0, Qt.Unchecked) iterator.__iadd__(1) # 安装PR订单重新勾选PR树 for pr in lst_prnr_oder: iterator = QTreeWidgetItemIterator(self.botleft) while iterator.value(): item = iterator.value() if (item.text(0) == pr) and (item.childCount() == 0): item.setCheckState(0, Qt.Checked) break iterator.__iadd__(1)
def save(self, ): # print("save path {}".format(self.tabName)) nodeList = [] # iterate through the treeview tvPathIterator = QTreeWidgetItemIterator( self.tvPath, flags=QTreeWidgetItemIterator.All) while tvPathIterator: if not tvPathIterator.value() is None: # print("save node {}".format(tvPathIterator.value().text(0))) queryPathNodeItem = tvPathIterator.value() queryPathNodeDict = queryPathNodeItem.data(0, Qt.UserRole).dict() nodeList.append(queryPathNodeDict) # if its the root node then save the description. if queryPathNodeDict["type"] == "Path Template": self.pathTemplateDict["description"] = queryPathNodeDict[ "description"] tvPathIterator.__iadd__(1) else: break self.pathTemplateDict["queryPath"] = nodeList self.model.setModelDirty()
def filter(self, text): """以text开头作为过滤条件示例""" cursor = QTreeWidgetItemIterator(self) while cursor.value(): item = cursor.value() if item.text(0).startswith(text): item.setHidden(False) # 需要让父节点也显示,不然子节点显示不出来 try: item.parent().setHidden(False) except Exception: traceback.print_exc() else: item.setHidden(True) cursor = cursor.__iadd__(1)
def _export_get_tree(self): reftree = [] # groupname, tag, rid (tag 0 item 1 group 2 subgroup) item = QTreeWidgetItemIterator( self.maintabwidget.tab_classify.treelist) while item.value(): groupname = item.value().text(0) if groupname: if item.value().parent(): reftree.append([groupname, 2, -1]) else: reftree.append([groupname, 1, -1]) else: rid = item.value().text(2) reftree.append([groupname, 0, rid]) item = item.__iadd__(1) return reftree
def remove_data(self): conn = sqlite.connect('TBTracker_DB/TBTracker.db') c = conn.cursor() currentTopLevelItemIndex = 0 it = QTreeWidgetItemIterator(self.productTree) while it.value(): if it.value() is self.productTree.topLevelItem(currentTopLevelItemIndex): currentTopLevelItemIndex += 1 else: if it.value().checkState(0) == Qt.Checked: c.execute('delete from product where ProductName="{}" and ShopName="{}"'.format( it.value().parent().text(0), it.value().text(0))) conn.commit() it = it.__iadd__(1) c.close() self.show_database()
def export_data(self): mainDirectory = check_os() currentFileDialog = SaveFileDialog() fileName, filetype = currentFileDialog.save_file(self, caption="手动保存数据", directory=mainDirectory, filter="Excel Files (*.xlsx)") conn = sqlite.connect('TBTracker_DB/TBTracker.db') c = conn.cursor() currentTopLevelItemIndex = 0 exportDataList = [] it = QTreeWidgetItemIterator(self.productTree) while it.value(): if it.value() is self.productTree.topLevelItem(currentTopLevelItemIndex): currentTopLevelItemIndex += 1 else: if it.value().checkState(0) == Qt.Checked: c.execute('select * from product where ProductName="{}" and ShopName="{}"'.format( it.value().parent().text(0), it.value().text(0))) queries = c.fetchall() exportDataList += queries it = it.__iadd__(1) c.close() excel = xlwt.Workbook() sheet = excel.add_sheet('商品数据', cell_overwrite_ok=True) sheet.write(0, 0, "商品标识") sheet.write(0, 1, "URL") sheet.write(0, 2, "标题") sheet.write(0, 3, "店铺名") sheet.write(0, 4, "价格") sheet.write(0, 5, "淘宝价") sheet.write(0, 6, "上次更新时间") for i, data in enumerate(exportDataList): sheet.write(i + 1, 0, data[0]) sheet.write(i + 1, 1, data[1]) sheet.write(i + 1, 2, data[2]) sheet.write(i + 1, 3, data[3]) sheet.write(i + 1, 4, data[4]) sheet.write(i + 1, 5, data[5]) sheet.write(i + 1, 6, data[6]) excel.save("{}.xlsx".format(fileName))
def on_push_button_get_clicked(self): self.list_make_all = [] self.length_less_list = [] self.list_make = [] self.half_cut_list = [] item = QTreeWidgetItemIterator(self.ui.tree_widget) while item.value(): tmp = {} if item.value().checkState(0) == Qt.Checked: if item.value().childCount() == 0: tmp = { 'AutoNo': item.value().text(0), 'Sort Id': item.value().text(1), 'Item': item.value().text(2), 'Fa Qty': item.value().text(3), 'Prd Width': item.value().text(4), 'Unit Length': item.value().text(5), } # pprint(tmp) # print(item.value().childCount()) if tmp: self.list_make_all.append(tmp) item = item.__iadd__(1) if self.list_make_all: for item in self.list_make_all: if int(item['Unit Length']) < self.length_limit: self.length_less_list.append(item) list_make_auto_no = list(set(x['AutoNo'] for x in self.list_make_all).difference( set(x['AutoNo'] for x in self.length_less_list))) for item in self.list_make_all: if item['AutoNo'] in list_make_auto_no: self.list_make.append(item) print(self.list_make) print(self.length_less_list) QMessageBox.information(self, '获取信息', '已经获取所选数据,请及时处理!', QMessageBox.Ok) # self.save_to_csv() else: QMessageBox.warning(self, '获取信息', '你没有选择任何内容!', QMessageBox.Ok)
def saveRight(self, index2): uid = self.getCurrentUID(index2) tr = self.ui.treeWidget index = self.mod.createIndex(index2.row(), 0) uid = self.mod.data(index, Qt.EditRole) cursor = QTreeWidgetItemIterator(tr) sql = """UPDATE sysuserright set fHasRight={} where fUserID={} and fRightID={}""" lst = [] while cursor.value(): item = cursor.value() if item.dirty: st = 1 if item.checkState(1) == Qt.Checked else 0 lst.append(sql.format(st, uid, item.jpData['fNMID'])) cursor = cursor.__iadd__(1) if lst: if QMessageBox.question(self, '提示', "用户权限被修改,是否保存?", (QMessageBox.Yes | QMessageBox.No), QMessageBox.Yes) == QMessageBox.Yes: return JPDb().executeTransaction(lst) else: return True else: return True
def search_node(self): """ 根据任务名称,查找节点 :return: """ try: # 先加载所有的,在filter self.widget.task.load_data() text = self.widget.search_text.text().strip() # 遍历树 item = QTreeWidgetItemIterator(self.widget.tree) #该类的value()即为QTreeWidgetItem while item.value(): if item.value().text(7) == 'task': name = item.value().text(0) if name.count(text) > 0: item.value().setHidden(False) else: item.value().setHidden(True) item = item.__iadd__(1) #游标加1,继续迭代 except Exception as a: print(a)
def show_detail_item(item): iterator = QTreeWidgetItemIterator(item) while iterator.value() is not None: iterator.value().setHidden(False) iterator.__iadd__(1)