def render(): #绘制 bk = gol.get_value("bk") app_mark.blit(bk, (0, 0), None, BLEND_MULT) app_mark.blit(bk, (0, 0), None, BLEND_MAX) BG_SCREEN.blit(bk, (0, 0)) BASE_SCREEN.blit(BG_SCREEN, (0, 0)) current_map.render() routeRender() current_map.renderLDMKS() current_map.renderCross() ali_mark = gol.get_value("map_mark") MAP_MARK.fill((0, 0, 0, ali_mark)) MAP_MARK.blit(app_mark, (0, 0)) renderControls() debugRender() BASE_SCREEN.blit(SCRIBE_SCREEN, (SCREEN_HEIGHT, 170)) BASE_SCREEN.blit(MAP_SCREEN, (0, 0)) BASE_SCREEN.blit(MAP_MARK, (0, 0)) detailLayerRender() BASE_SCREEN.blit( gol.font_Scribe.render(str("WagLplanner v2.1.1 by Lantern"), True, (255, 255, 255, 128)), (SCREEN_WIDTH - 200, SCREEN_HEIGHT - 25)) pass
def dragAnimationUpdate(): #阻尼拖拽动画 global current_map drag_kinetic_energy_x = gol.get_value("drag_kinetic_energy_x") drag_kinetic_energy_z = gol.get_value("drag_kinetic_energy_z") drag_velocity_x = math.sqrt(2 * math.fabs(drag_kinetic_energy_x)) #单位质量 drag_velocity_z = math.sqrt(2 * math.fabs(drag_kinetic_energy_z)) drag_force_x = gol.get_value("drag_f") * drag_velocity_x #阻尼定义 drag_force_z = gol.get_value("drag_f") * drag_velocity_z if drag_kinetic_energy_x < 0: drag_velocity_x = -drag_velocity_x if drag_kinetic_energy_z < 0: drag_velocity_z = -drag_velocity_z if (math.fabs(drag_velocity_x) + math.fabs(drag_velocity_z) < 1): drag_velocity_x = 0 drag_velocity_z = 0 drag_kinetic_energy_x = 0 drag_kinetic_energy_z = 0 else: current_map.OFFSET_X = current_map.OFFSET_X - (drag_velocity_x * 0.01) current_map.OFFSET_Z = current_map.OFFSET_Z - (drag_velocity_z * 0.01) drag_kinetic_energy_x = drag_kinetic_energy_x - drag_force_x * ( drag_velocity_x) * 0.01 drag_kinetic_energy_z = drag_kinetic_energy_z - drag_force_z * ( drag_velocity_z) * 0.01 gol.set_value("drag_kinetic_energy_x", drag_kinetic_energy_x) gol.set_value("drag_kinetic_energy_z", drag_kinetic_energy_z)
def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) __sortingEnabled = self.listWidget.isSortingEnabled() self.listWidget.setSortingEnabled(False) self.listWidget.itemClicked.connect(self.jump_to_GroupOperation) self.listWidget.setSortingEnabled(__sortingEnabled) self.toolButton.setText(_translate("Dialog", "+")) self.toolButton.clicked.connect(self.jump_to_GroupOperation) self.pushButton.setText(_translate("Dialog", "send")) self.pushButton_2.setText(_translate("Dialog", "-")) self.SelfGroupLayout() group_name = gol.get_value('GroupName') group_id = gol.get_value('GroupId') print(group_name) self.textBrowser.setHtml( _translate( "Dialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n" "<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n" "p, li { white-space: pre-wrap; }\n" "</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n" "<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">" + group_name + "<br/>" + group_id + "</p></body></html>")) self.pushButton.clicked.connect(self.SelfChatSend) self.pushButton_2.clicked.connect(self.QuitChat) __sortingEnabled = self.listWidget_2.isSortingEnabled() self.listWidget_2.setSortingEnabled(False) self.listWidget_2.setSortingEnabled(__sortingEnabled) t = threading.Thread(target=self.ReceiveMessage) t.start()
def SelfGroupLayout(self): global url global hed global group_id url = gol.get_value('url') hed = gol.get_value('hed') api = '/api/group' group_id = gol.get_value('GroupId') print(group_id) page = 1 per_page = 10 data = {'group_id': group_id, 'page': page, 'per_page': per_page} r = requests.post(url + api, json=data, headers=hed) print("获取指定分组包括组员的群组信息") print(r.json()) global GroupPage GroupPage = r.json() if not 'items' in GroupPage == None: member = GroupPage['items'] print('群成员为', member) for line in member: if not line['nickname'] == None: GroupMemberName = line['nickname'] print('群成员具体nickname为', GroupMemberName) self.listWidget.addItem(GroupMemberName)
def addRowContent(self, content): rowcount = self.Table_widget.rowCount() self.Table_widget.insertRow(rowcount) content.insert(0, str(rowcount)) for i in range(len(content)): self.Table_widget.setItem(rowcount, i, QTableWidgetItem(content[i])) self.Table_widget.resizeColumnsToContents() self.Table_widget.resizeRowsToContents() cbox = ComboBox(parent=self.Table_widget) itemdist = fc.retmatdiv(MATDIROOT) for k, v in itemdist.items(): if v == "dir": k = k + "\tD" elif v == "mtl": k = k + "\tM" cbox.addItem(k) self.flushtable() #################################################### indextext = '' if os.path.exists(gol.get_value('WORKPATH') + "/" + "config"): configpath = gol.get_value('WORKPATH') + "\\config" objson = fc.loadJson(configpath) try: context = objson[content[1]] except KeyError: context = '' if not context == '': if self.mdict == None: self.mdict = self.getAllMaterials() indextext = str(self.mdict[context]).split('\\')[0] #print(indextext) else: indextext = '' else: if os.path.exists(gol.get_value('WORKPATH') + "/" + "config"): pass else: if not self.mdict == None: self.mdict.clear() self.mdict = None if indextext == '': cbox.setCurrentIndex(-1) else: cbox.setCurrentText(indextext + '\t' + 'D') ######################################################## self.Table_widget.setCellWidget(rowcount, MATSTARTCOL, cbox) self.Table_widget.viewport().update() def emit_Signal_comboboxchange(msg): cbox.comboboxchange.emit(rowcount, MATSTARTCOL, MATDIROOT + "\\" + msg) cbox.currentTextChanged.connect(self.flushtable) cbox.comboboxchange.connect(self.slotCombobox) cbox.currentTextChanged.connect(emit_Signal_comboboxchange) QApplication.processEvents() if not indextext == '': cbox.currentTextChanged.emit(cbox.currentText())
def get_port_description(role, id, port): link_table = gol.get_value('link_table') device_name_dict = gol.get_value('device_name_dict') #global link_table port_desc = '' for i in link_table: if i[0].split('-')[-2] + i[0].split('-')[-1] == role + str( id) and i[2].split('-')[-2] + i[2].split('-')[-1] == port: port_desc = 'To-' + device_name_dict.get(i[2]) + '-' + i[3] break return port_desc
def addColComBox(self, row, col, path): if not self.Table_widget.columnCount() > col: self.Table_widget.insertColumn(col) combox = ComboBox(self.Table_widget) itemdist = fc.retmatdiv(path) for k, v in itemdist.items(): if v == "dir": k = k + "\tD" elif v == "mtl": k = k + "\tM" combox.addItem(k) indextext = '' if os.path.exists(gol.get_value('WORKPATH') + "\\" + "config") and self.InitFlag: #self.InitFlag=False configpath = gol.get_value('WORKPATH') + "\\config" objson = fc.loadJson(configpath) context = objson[self.Table_widget.item(row, 1).text()] if not context == '': if not self.mdict == None: self.mdict = self.getAllMaterials() l = self.mdict[context] indextext = l.split('\\')[col - 3] #print(indextext) else: indextext = '' else: if os.path.exists(gol.get_value('WORKPATH') + "/" + "config"): pass else: if not self.mdict == None: self.mdict.clear() self.mdict = None if indextext == '': combox.setCurrentIndex(-1) elif re.search('.*\.mtl$', indextext) == None: combox.setCurrentText(indextext + "\tD") else: combox.setCurrentText(context + "\tM") self.Table_widget.setCellWidget(row, col, combox) self.Table_widget.viewport().update() def emit_Signal_comboboxchange(msg): combox.comboboxchange.emit(row, col, path + "\\" + msg) combox.currentTextChanged.connect(self.flushtable) combox.comboboxchange.connect(self.slotCombobox) combox.currentTextChanged.connect(emit_Signal_comboboxchange) if re.search('.*\.mtl$', indextext) == None: #self.InitFlag=True combox.currentTextChanged.emit(combox.currentText())
def renderLDMKS(self): layer_ldmk_sw = gol.get_value("layer_ldmk_sw") layer_ldmc_sw = gol.get_value("layer_ldmc_sw") layer_wlwl_sw = gol.get_value("layer_wlwl_sw") if gol.get_value("map_jump_sw") == 1: MAP_SCREEN.blit( gol.font_Basis.render(str("自动寻路中..."), True, (100, 0, 0, 128)), (20, 30)) if layer_ldmk_sw == True: self.landmarks_manager.render(self.OFFSET_X, self.OFFSET_Z, self.SCALE)
def thr(): shutil.copyfile("./startkeyshot.py", gol.get_value('WORKPATH') + "\\startkeyshot.py") print("开始渲染", gol.get_value('WORKPATH')) process = Popen([ 'keyshot', '-script', gol.get_value('WORKPATH') + "\\startkeyshot.py", '>', 'log.txt' ], shell=True, cwd=gol.get_value('WORKPATH'), encoding="utf-8") path = gol.get_value('WORKPATH') process.wait() os.remove(path + "\\startkeyshot.py") self.reng.setEnabled(True)
def SendMessage(self): global hed global token global auth_token global url global group_id group_id = gol.get_value('GroupId') url = gol.get_value('url') hed = gol.get_value('hed') api = '/api/message/send' content = self.plainTextEdit.toPlainText() data = {'group_id': group_id, 'content': content} r = requests.post(url + api, json=data, headers=hed) print("发送消息") print(r.json())
def mouseMoveHandler(x, y, mouse_area): #鼠标移动事件处理 global mouse_posx, mouse_posy, mosue_posx_old, mouse_posy_old, velocity_x, velocity_z, left_button_down mouse_posx_old = mouse_posx mouse_posy_old = mouse_posy mouse_posx = x mouse_posy = y if left_button_down == 1: dx = mouse_posx - mouse_posx_old dz = mouse_posy - mouse_posy_old current_map.OFFSET_X = current_map.OFFSET_X - (dx / 100 * 16 * current_map.SCALE) current_map.OFFSET_Z = current_map.OFFSET_Z - (dz / 100 * 16 * current_map.SCALE) velocity_x = dx * 5 * current_map.SCALE velocity_z = dz * 5 * current_map.SCALE if mouse_area == IN_SWITCH: for item in controls: item.onPassedBy(x - SCREEN_HEIGHT, y) for item in layers: item.onPassedBy(x - SCREEN_HEIGHT, y) for item in expanders: item.onPassedBy(x - SCREEN_HEIGHT, y) if mouse_area == IN_DETAIL: detail_controls = gol.get_value("detail_controls") for item in detail_controls: item.onPassedBy(x - 50, y - 50)
def lightAnimationUpdate(): #遮罩层动画 ali = gol.get_value("map_mark") if (ali > 0): ali = ali - int(math.log(ali + 1)) else: ali = 0 gol.set_value("map_mark", ali)
def closeDetail(id): #收缩细节窗口 for item in expanders: if item.id == id: if not item.isPassedBy(mouse_posx - SCREEN_HEIGHT, mouse_posy): item.onClick() if id == 7: gol.set_value("detail_end", 0) gol.set_value("detail_endx", 980) gol.set_value("detail_endy", 30) if id == 8: gol.set_value("detail_end", 0) gol.set_value("detail_endx", 980) gol.set_value("detail_endy", 70) if id == 9: gol.set_value("detail_end", 0) gol.set_value("detail_endx", 980) gol.set_value("detail_endy", 110) gol.set_value("detail_menu", 0) detail_controls = gol.get_value("detail_controls") detail_controls.clear() gol.set_value("detail_controls", detail_controls) detail_id = 0
def JoinGroup(self): global group_name url = gol.get_value('url') hed = gol.get_value('hed') api = '/api/group/join' group_id = self.lineEdit.text() page = 1 per_page = 10 data = {'group_id': group_id} r = requests.post(url + api, json=data, headers=hed) print("加入群组") print(r.json()) group_name = r.json()['group_name'] print(group_name) gol.set_value('GroupId', group_id) gol.set_value('GroupName', group_name) self.jump_to_MainChat()
def get_address(role_name, device_id, port, index=0): address_mask_dict = gol.get_value('address_mask_dict') #global address_mask_dict try: address = address_mask_dict.get( str(role_name) + '-' + str(device_id) + port)[index].split('/')[0] except: address = '' return address
def expandHandler(id, selected): #展开事件处理 global id_detail if selected == True: if id == 7: gol.set_value("detail_end", 1) gol.set_value("detail_endx", 50) gol.set_value("detail_endy", 50) id_detail = 7 gol.set_value("detail_menu", 1) detail_controls = gol.get_value("detail_controls") oringinal_x = 20 oringinal_y = 15 for item in current_map.landmarks_manager.landmarks: string = str("%s (x: %d , z: %d)" % (item.name, item.posx, item.posz)) ldmk_button = control.DetailSwitch( (400, 30), (oringinal_x, oringinal_y), item.color, string, item.id) detail_controls.append(ldmk_button) oringinal_y = oringinal_y + 30 if oringinal_y > SCREEN_HEIGHT - 125: oringinal_x = oringinal_x + 410 oringinal_y = 15 control_btn_next = control.Button((32, 32), (890, 30), (0, 0, 0, 0), "操作按钮之下一页", 21, "btn_next.png") control_btn_last = control.Button((32, 32), (890, 70), (0, 0, 0, 0), "操作按钮之上一页", 22, "btn_last.png") control_btn_goto = control.Button((32, 32), (890, 140), (0, 0, 0, 0), "操作按钮之跳转", 23, "btn_goto.png") detail_controls.append(control_btn_next) detail_controls.append(control_btn_last) detail_controls.append(control_btn_goto) gol.set_value("detail_controls", detail_controls) if id == 8: gol.set_value("detail_end", 1) gol.set_value("detail_endx", 50) gol.set_value("detail_endy", 50) id_detail = 8 gol.set_value("detail_menu", 2) if id == 9: gol.set_value("detail_end", 1) gol.set_value("detail_endx", 50) gol.set_value("detail_endy", 50) id_detail = 9 gol.set_value("detail_menu", 3) if selected == False: closeDetail(id)
def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Dialog")) self.label.setText(_translate("Dialog", "ERROR")) message = gol.get_value('registerEM') print(message) self.label_2.setText(message) self.pushButton.setText(_translate("Dialog", "确定")) self.pushButton.clicked.connect(self.jump_to_Register)
def get_network_status(): #print(gol._global_dict) out = subprocess.getstatusoutput("ping %s -f -c 10" % gol.get_value("mcu_ip")) #print(out) if not out[0]: re = out[1].split(',')[2:] gol.set_value("packet loss", re[0].split()[0]) gol.set_value(re[1].split(' = ')[0].split('\n')[1], re[1].split(' = ')[1])
def animationUpdate(): global current_map current_map = gol.get_value("current_map") zoomAnimationUpdate() dragAnimationUpdate() lightAnimationUpdate() controlsAnimationUpdate() detailAnimationUpdate() bkAnimationUpdate() mapOffsetAnimationUpdate()
def bandwidth(): """ 获取到特定ip的流量,bytes,返回一个数组,进入的bytes数,发出的bytes数;[234.11,2233.33] """ cmd = "iptables -nvxL|grep %s|awk '{print $2}'" % gol.get_value("mcu_ip") out = subprocess.getstatusoutput(cmd) if not out[0]: st = map(lambda x: int(x) * 8 / 1000, out[1].split()) #print(st) return list(st)
def bkAnimationUpdate(): #背景切换动画 bk_alpha = gol.get_value("bk_alpha") bk_tend = gol.get_value("bk_end") bk = gol.get_value("bk") if bk_alpha < 100: if bk_tend == 1: bk_main.set_alpha(bk_alpha) bk.blit(bk_main, (0, 0)) if bk_tend == 2: bk_hell.set_alpha(bk_alpha) bk.blit(bk_hell, (0, 0)) if bk_tend == 3: bk_end.set_alpha(bk_alpha) bk.blit(bk_end, (0, 0)) bk_alpha = bk_alpha + 1 if bk_alpha > 70 and bk_alpha < 99: bk_alpha = 99 gol.set_value("bk_alpha", bk_alpha) gol.set_value("bk", bk)
def detailLayerRender(): #细节窗口绘制 global detail_controls scale = gol.get_value("detail_scale") position_x = gol.get_value("detail_posx") position_y = gol.get_value("detail_posy") position = (position_x, position_y) detail_controls = gol.get_value("detail_controls") new_size = (int( (SCREEN_WIDTH - 100) * scale), int((SCREEN_HEIGHT - 100) * scale)) if (new_size[0] + new_size[1] > 20): DETAIL_SCREEN.fill((128, 128, 128, 200)) if id_detail == 7: for item in detail_controls: item.render(DETAIL_SCREEN, (0, 0, 0, 255)) A = pygame.transform.scale(DETAIL_SCREEN, new_size) BASE_SCREEN.blit(A, position)
def get_gateway(role_name, device_id, port, index=0): address_mask_dict = gol.get_value('address_mask_dict') #global address_mask_dict try: address_mask = address_mask_dict.get( str(role_name) + '-' + str(device_id) + port)[index] net = ipaddress.ip_network(address_mask, strict=False) gateway = str([x for x in net.hosts()][0]) except: gateway = '' return gateway
def write_symptom(word_all,word_map): """ :param word_all: :param word_map: :return: """ word_all = sorted(word_all, key=len, reverse=True)#按照字符数从大到小排序 df = pd.read_csv('data/prescription_10000.csv',encoding=gol.get_value('CODE')) df.rename(columns={'id': '序号', 'title': '方名', '标准药物名称': '处方'}, inplace=True) #['id','title','主治','','药物组成'] ['序号','方名','主治','symptom','处方'] #新加一列 col_name = df.columns.tolist() col_name.insert(8, 'symptom') df = df.reindex(columns=col_name) for index, row in df.iterrows(): function = row['主治'] small_list = max_match2(function,word_all) small_list = [word_map[x] for x in small_list] df.loc[index,'symptom'] = ' '.join(small_list) df.to_csv(gol.get_value('ENTITY_FILE'),encoding=gol.get_value('CODE'),index=0,columns=['name'])
def write_symptom2(word_map2): """ 使用similar_words.csv第一次匹配,替换,再用同义词进行第二次替换 :return: """ # 创建替换词典 with open('similar_word/split.txt','r',encoding='utf8') as f: line_list = f.readlines() word_map = {} for line in line_list: line = line.strip() line_sep = line.split(',') word_map[line_sep[0]]=line_sep[1].split() #使用all_words.txt第一次匹配 with open('similar_word/all_words.txt','r',encoding='utf8') as f: word_all = f.readlines() word_all = [x.strip() for x in word_all] #处理原始文件 df = pd.read_csv('data/prescription_10000.csv', encoding=gol.get_value('CODE'),usecols=['id','title','处方来源','药物组成','主治','标准药物名称']) df.rename(columns={'id': '序号', 'title': '方名', '标准药物名称': '处方','处方来源':'出处'},inplace=True) # 新加一列 col_name = df.columns.tolist() col_name.insert(6, 'symptom_1') col_name.insert(6, 'symptom_2') col_name.insert(6, 'symptom') df = df.reindex(columns=col_name) for index, row in df.iterrows(): function = row['主治'] small_list1 = max_match2(function, word_all) df.loc[index, 'symptom_1'] = ' '.join(small_list1) small_list2 = [] for word in small_list1: if(word in word_map): small_list2.extend(word_map[word]) else: small_list2.append(word) df.loc[index, 'symptom_2'] = ' '.join(small_list2) small_list3 = [word_map2[x] if x in word_map2 else '' for x in small_list2] df.loc[index, 'symptom'] = ' '.join(small_list3) df.to_csv(gol.get_value('ENTITY_FILE'), encoding=gol.get_value('CODE'), index=0,columns=['序号','方名','主治','symptom_1','symptom_2','symptom','药物组成','处方','出处'])
def GroupsLayout(self): global GroupName global groups global GroupId groups = gol.get_value('groups') for line in groups: if not line['group_name'] == None: GroupName = line['group_name'] + '_' + str(line['id']) print(GroupName) self.listWidget.addItem(GroupName)
def zoomAnimationUpdate(): #阻尼缩放动画 global current_map zoom_kinetic_energy = gol.get_value("zoom_kinetic_energy") zoom_velocity = math.sqrt(2 * math.fabs(zoom_kinetic_energy)) #单位质量 zoom_force = gol.get_value("zoom_f") * zoom_velocity if zoom_kinetic_energy < 0: zoom_velocity = -zoom_velocity if (math.fabs(zoom_velocity) < 0.2): zoom_velocity = 0 zoom_kinetic_energy = 0 else: current_map.SCALE = current_map.SCALE + (zoom_velocity * 0.01) * ( current_map.SCALE + 1) zoom_kinetic_energy = zoom_kinetic_energy - zoom_force * ( zoom_velocity) * 0.01 if current_map.SCALE > 40: current_map.SCALE = 40 if current_map.SCALE < 0.1: current_map.SCALE = 0.1 gol.set_value("zoom_kinetic_energy", zoom_kinetic_energy)
def detailAnimationUpdate(): #细节窗口动画 detail_end = gol.get_value("detail_end") detail_endx = gol.get_value("detail_endx") detail_endy = gol.get_value("detail_endy") detail_scale = gol.get_value("detail_scale") detail_posx = gol.get_value("detail_posx") detail_posy = gol.get_value("detail_posy") err = detail_end - detail_scale errx = detail_endx - detail_posx erry = detail_endy - detail_posy detail_velocity = err * 0.14 #比例控制器 detail_velocityx = errx * 0.14 #比例控制器 detail_velocityy = erry * 0.2 #比例控制器 if (math.fabs(err) + math.fabs(errx) + math.fabs(erry)) < 0.05: detail_scale = detail_end #detail_posx = detail_endx #detail_posy = detail_endy else: detail_scale = detail_scale + detail_velocity detail_posx = detail_posx + detail_velocityx detail_posy = detail_posy + detail_velocityy gol.set_value("detail_scale", detail_scale) gol.set_value("detail_posx", detail_posx) gol.set_value("detail_posy", detail_posy)
def create_list(): """" 由同义词集返回所有同义词列表 :return: word_all:所有同义词;word_map:{词:首义词} """ with open(gol.get_value('SYNONYM_FILE') ,'r',encoding=gol.get_value('CODE')) as f: file_list = f.readlines() word_num = len(file_list) word_list = []#首义词list word_map = {}#词:首义词 word_all = []#所有词list for line in file_list: line_list = line.strip().split() first_word = line_list[0]#首义词 word_list.append(first_word) for word in line_list: word_map[word] = first_word if(word in word_all): print('重复词:'+word) else: word_all.append(word) return word_all,word_map
def get_mask(role_name, device_id, port, index=0, type=0): address_mask_dict = gol.get_value('address_mask_dict') #global address_mask_dict try: mask = address_mask_dict.get( str(role_name) + '-' + str(device_id) + port)[index].split('/')[1] b = (int(mask) * "1") + ((32 - int(mask)) * "0") b = [int(x, 2) for x in (b[:8], b[8:16], b[16:24], b[24:])] maskb = "%s.%s.%s.%s" % tuple(b) if type == 0: mask = maskb except: mask = '' return mask