import datetime import sys from PyQt6 import QtCore from PyQt6.QtCore import Qt, QThread,QObject,QThreadPool, QTimer from PyQt6.QtGui import QColor, QFont from PyQt6.QtTextToSpeech import QTextToSpeech from PyQt6.QtWidgets import QApplication, QWidget, QMessageBox, QTableWidgetItem, QAbstractItemView import requests from UI.main22 import Ui_Form from Functions.QtFunctions.LogerinTxt import app_logger from Functions.QtFunctions import findServerWidget as FindServerWidget from Functions.QtFunctions import LoginWidget_display as loginWidget headerlabel0= ["序号","数据序号","备","机号","航班信息","机型","机型信息","发动机","机位","航班号","备","计达","备","预达", "备","计飞","备","备","机位","类型","备","放行","备","工1","备","工2","备","工3","备","工4", "备","班组长","备","到位","备","放行","备","销夹","电签","随机","备","随机","备","保留","备","工作包", "备","进出港城市","备","维修人员","交班人员","放行","备","航班编号","备","任务编号","备","TATD","备","类型", "备","附加消息","备","备","备","备"] headerlabel_B=["序号", "机号", "机型", "发动机", "航班号", "计达", "预达", "计飞", "机位", "类型", "工作单", "飞单", "客舱单", "临工单","AMRO记录", "电签复查", "接机电签", "任务电签", "二送电签", "备", "备", "备", "备", "备", "进出港城市", "维修人员", "二送人员","放行", "航班编号", "电签工卡", "备", "类型", "附加消息"] versionNumb= "17.0.0" class sortdisplaySever(QObject): sortupdate = QtCore.pyqtSignal(str, dict, list, str, str) def __init__(self, name, ip, selectedtime, text, displayMode, selectedbc, displayselect, thread): super().__init__() self.funcName = name self.ipinfo = ip self.selectedtime = selectedtime self.text = text self.displayMode = displayMode self.selectedbc = selectedbc self.displayselect_mode = displayselect self.thread = thread nowDay = datetime.datetime.now().strftime("%Y%m%d") tomorr =(datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y%m%d") yester =(datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y%m%d") if self.selectedtime == nowDay: self.date = "2" elif self.selectedtime == tomorr: self.date = "3" elif self.selectedtime == yester: self.date = "1" else: self.date = "4" def run(self): try: list = [] if self.funcName == "sortTableWidgetDispaly": #print("1") self.sortTableWidgetDispaly() self.sortupdate.emit("sortTableWidgetDispaly", self.sorttableWidgetDispalydata, list, self.seversts,self.displayMode) self.sortupdate.emit("sortTableWidgetDispalyALL", self.DispalydataAll, list, self.seversts,self.displayMode) if self.funcName == "sortTableWidgetDispalyALL": #print("2") self.sortTableWidgetDispalyALL() self.sortupdate.emit("sortTableWidgetDispalyALL", self.sorttableWidgetDispalydata, list, self.seversts,self.displayMode) elif self.funcName == "SearchsortTableWidgetDispaly": #print("3") self.SearchsortTableWidgetDispaly() self.sortupdate.emit("SearchsortTableWidgetDispaly", self.sorttableWidgetDispalydata, list,self.seversts,self.displayMode) elif self.funcName == "sorttableWidgetDisplayChange": #print("4") self.sorttableWidgetDisplayChange() self.sortupdate.emit("sorttableWidgetDisplayChange", self.sortlogchange, list, self.seversts,self.displayMode) elif self.funcName == "sorttableWidgetPeopleDisplay": self.sorttableWidgetPeopleDisplay() self.sortupdate.emit("sorttableWidgetPeopleDisplay", self.sortdiplaylist, self.peopleOnJob,self.seversts, self.displayMode) elif self.funcName == "sorttableWidgetLOGDispaly": self.sorttableWidgetLOGDispaly() self.sortupdate.emit("sorttableWidgetLOGDispaly", self.sortlog, list, self.seversts, self.displayMode) elif self.funcName == "sorttableWidgetPHONEDispaly": self.sorttableWidgetPHONEDispaly() self.sortupdate.emit("sorttableWidgetPHONEDispaly", self.sorttableWidgetPHONEDispalydata, list,self.seversts, "") self.thread.quit() except Exception as e: app_logger.log_error(e) finally: self.thread.quit() def severpost_nomeassge(self, postname, postdata, postdata2, postdata3): try: ip = "http://" + str(self.ipinfo) + "/static/" + str(postname) + str(postdata) + str(postdata2) + str(postdata3) try: res = requests.get(url=ip, timeout=30).json() self.seversts = "1" return res except Exception as e: app_logger.log_error(e) app_logger.log_error("重大bug") app_logger.log_error(ip) self.seversts = "0" return [] except Exception as e: app_logger.log_error(e) def sorttableWidgetPHONEDispaly(self): try: sorttableWidgetPHONEDispalydataall = self.severpost_nomeassge("getphonelist", "", "", "") self.sorttableWidgetPHONEDispalydata = {} num = 0 if sorttableWidgetPHONEDispalydataall != None: if self.text != "": for i in sorttableWidgetPHONEDispalydataall.keys(): if str.lower(str(self.text)) in str(sorttableWidgetPHONEDispalydataall[i]): self.sorttableWidgetPHONEDispalydata[str(num)] = sorttableWidgetPHONEDispalydataall[i] num += 1 else: self.sorttableWidgetPHONEDispalydata = sorttableWidgetPHONEDispalydataall except Exception as e: app_logger.log_error(e) def checkall(self, datas, text): res = {} try: num = 0 for i in datas.keys(): if datas[i]["109"] != text: res[str(num)] = datas[i] num += 1 except Exception as e: app_logger.log_error(e) return res def checkStrsingle(self,datas, text, text2): #单一条件筛选 res = {} try: num = 0 for i in datas.keys(): if str(text) in str(datas[i]) and datas[i]["109"] != text2: res[str(num)] = datas[i] num += 1 except Exception as e: app_logger.log_error(e) return res def checkStrTerminalAll(self,datas, text1,text2,text3,text4): #筛选航站且显示全部 res = {} try: num = 0 for i in datas.keys(): if str(datas[i]["8"]) != "" and datas[i]["109"] != text1: if str(datas[i]["8"])[0] == text2 and str(datas[i]["8"])[0] == text3: res[str(num)] = datas[i] num += 1 elif str(datas[i]["8"]) == "" and str(datas[i]["109"]) == text4: res[str(num)] = datas[i] num += 1 except Exception as e: app_logger.log_error(e) return res def checkStrTerminalAll2(self,datas, text1,text2,text3,text4): #筛选航站且显示全部 res = {} try: num = 0 for i in datas.keys(): if str(datas[i]["8"]) != "" and datas[i]["109"] != text1: if str(datas[i]["8"])[0] != text2 and str(datas[i]["8"])[0] != text3: res[str(num)] = datas[i] num += 1 elif str(datas[i]["8"]) == "" and str(datas[i]["109"]) == text4: res[str(num)] = datas[i] num += 1 except Exception as e: app_logger.log_error(e) return res def checkStrTerminalAll3(self,datas, text1,text2,text3,text4): #筛选航站且显示全部 res = {} try: num = 0 for i in datas.keys(): if str(datas[i]["8"]) != "" and datas[i]["109"] == text1: if str(datas[i]["8"])[0] == text2 and str(datas[i]["8"])[0] == text3: res[str(num)] = datas[i] num += 1 elif str(datas[i]["8"]) == "" and str(datas[i]["109"]) == text4: res[str(num)] = datas[i] num += 1 except Exception as e: app_logger.log_error(e) return res def checkStrTerminalAll4(self,datas, text1,text2,text3,text4): #筛选航站且显示全部 res = {} try: num = 0 for i in datas.keys(): if str(datas[i]["8"]) != "" and datas[i]["109"] == text1: if str(datas[i]["8"])[0] != text2 and str(datas[i]["8"])[0] != text3: res[str(num)] = datas[i] num += 1 elif str(datas[i]["8"]) == "" and str(datas[i]["109"]) == text4: res[str(num)] = datas[i] num += 1 except Exception as e: app_logger.log_error(e) return res def sortTableWidgetDispaly(self): try: text = self.text Partdisplay = self.displayselect_mode # 不显示起飞航班 # print(Partdisplay) tableWidgetDispalydataAll = {} if self.displayMode == "A" and (self.selectedbc == "0" or self.date=="4"): tableWidgetDispalydataAll = self.severpost_nomeassge("tableWidgetDispaly", "/%s" % self.selectedtime,"/%s"%self.date,"") elif self.displayMode == "B"and (self.selectedbc == "0" or self.date=="4"): tableWidgetDispalydataAll = self.severpost_nomeassge("tableWidgetDispaly2", "/%s" % self.selectedtime,"/%s"%self.date,"") elif self.displayMode == "A" and self.selectedbc == "1": tableWidgetDispalydataAll = self.severpost_nomeassge("tableWidgetDispalyRead","/%s"%self.date,"","") elif self.displayMode == "B"and self.selectedbc == "1": tableWidgetDispalydataAll = self.severpost_nomeassge("tableWidgetDispalyRead2","/%s"%self.date,"","") self.DispalydataAll=tableWidgetDispalydataAll self.sorttableWidgetDispalydata = {} num = 0 if tableWidgetDispalydataAll != None: if text != "" and text != "T1" and text != "T2" and text != "T6" and text != "T2T6" and text != "T1T6" and Partdisplay == "0": self.sorttableWidgetDispalydata=self.checkStrsingle(tableWidgetDispalydataAll, text, "") elif text == "T1" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll(tableWidgetDispalydataAll, "", "1", "1", "1") elif text == "T2" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll(tableWidgetDispalydataAll, "", "2", "2", "2") elif text == "T2T6" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "", "1", "1", "1") elif text == "T1T6" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "", "2", "2", "1") elif text == "T6" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "", "1", "2", "1") elif text != "" and text != "T1" and text != "T2" and text != "T6" and text != "T2T6" and text != "T1T6" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrsingle(tableWidgetDispalydataAll, text, "4") elif text == "T1" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll(tableWidgetDispalydataAll, "4", "1", "1", "1") elif text == "T2" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll(tableWidgetDispalydataAll, "4", "2", "2", "1") elif text == "T2T6" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "4", "1", "1", "1") elif text == "T1T6" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "4", "2", "2", "1") elif text == "T6" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "4", "1", "2", "1") elif text == "" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkall(tableWidgetDispalydataAll, "4") elif text != "" and text != "T1" and text != "T2" and text != "T6" and text != "T2T6" and text != "T1T6" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrsingle(tableWidgetDispalydataAll, text, "1") elif text == "T1" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll3(tableWidgetDispalydataAll, "1", "1", "1", "1") elif text == "T2" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll3(tableWidgetDispalydataAll, "1", "2", "2", "1") elif text == "T2T6" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll4(tableWidgetDispalydataAll, "1", "1", "1", "1") elif text == "T1T6" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll4(tableWidgetDispalydataAll, "1", "2", "2", "1") elif text == "T6" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll4(tableWidgetDispalydataAll, "1", "1", "2", "1") elif text == "" and Partdisplay == "3": for i in tableWidgetDispalydataAll.keys(): if tableWidgetDispalydataAll[i]["109"] == '1': self.sorttableWidgetDispalydata[str(num)] = tableWidgetDispalydataAll[i] num += 1 else: self.sorttableWidgetDispalydata = tableWidgetDispalydataAll except Exception as e: app_logger.log_error(e) def sortTableWidgetDispalyALL(self): try: if self.displayMode == "A" and (self.selectedbc == "0" or self.date=="4"): self.sorttableWidgetDispalydata = self.severpost_nomeassge("tableWidgetDispaly", "/%s" % self.selectedtime,"/%s"%self.date,"") elif self.displayMode == "B"and (self.selectedbc == "0" or self.date=="4"): self.sorttableWidgetDispalydata = self.severpost_nomeassge("tableWidgetDispaly2", "/%s" % self.selectedtime,"/%s"%self.date,"") elif self.displayMode == "A" and self.selectedbc == "1": self.sorttableWidgetDispalydata = self.severpost_nomeassge("tableWidgetDispalyRead","/%s"%self.date,"","") elif self.displayMode == "B"and self.selectedbc == "1": self.sorttableWidgetDispalydata = self.severpost_nomeassge("tableWidgetDispalyRead2","/%s"%self.date,"","") except Exception as e: app_logger.log_error(e) def SearchsortTableWidgetDispaly(self): try: text = self.text self.seversts = "1" Partdisplay = self.displayselect_mode # 不显示起飞航班 # print(Partdisplay) tableWidgetDispalydataAll = self.selectedbc self.sorttableWidgetDispalydata = {} num = 0 if tableWidgetDispalydataAll != None: if text != "" and text != "T1" and text != "T2" and text != "T6" and text != "T2T6" and text != "T1T6"and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrsingle(tableWidgetDispalydataAll, text, "") elif text == "T1" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll(tableWidgetDispalydataAll, "", "1", "1", "1") elif text == "T2" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll(tableWidgetDispalydataAll, "", "2", "2", "1") elif text == "T2T6" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "", "1", "1", "1") elif text == "T1T6" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "", "2", "2", "1") elif text == "T6" and Partdisplay == "0": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "", "1", "2", "1") elif text != "" and text != "T1" and text != "T2" and text != "T6" and text != "T2T6" and text != "T1T6" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrsingle(tableWidgetDispalydataAll, text, "4") elif text == "T1" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll(tableWidgetDispalydataAll, "4", "1", "1", "1") elif text == "T2" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll(tableWidgetDispalydataAll, "4", "2", "2", "1") elif text == "T2T6" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "4", "1", "1", "1") elif text == "T1T6" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "4", "2", "2", "1") elif text == "T6" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkStrTerminalAll2(tableWidgetDispalydataAll, "4", "1", "2", "1") elif text == "" and Partdisplay == "1": self.sorttableWidgetDispalydata = self.checkall(tableWidgetDispalydataAll, "4") elif text != "" and text != "T1" and text != "T2" and text != "T6" and text != "T2T6" and text != "T1T6" and Partdisplay == "3": for i in tableWidgetDispalydataAll.keys(): if str(text) in str(tableWidgetDispalydataAll[i]) and tableWidgetDispalydataAll[i]["109"] == '1': self.sorttableWidgetDispalydata[str(num)] = tableWidgetDispalydataAll[i] num += 1 elif text == "T1" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll3(tableWidgetDispalydataAll, "1", "1", "1", "1") elif text == "T2" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll3(tableWidgetDispalydataAll, "1", "2", "2", "1") elif text == "T2T6" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll4(tableWidgetDispalydataAll, "1", "1", "1", "1") elif text == "T1T6" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll4(tableWidgetDispalydataAll, "1", "2", "2", "1") elif text == "T6" and Partdisplay == "3": self.sorttableWidgetDispalydata = self.checkStrTerminalAll4(tableWidgetDispalydataAll, "1", "1", "2", "1") elif text == "" and Partdisplay == "3": for i in tableWidgetDispalydataAll.keys(): if tableWidgetDispalydataAll[i]["109"] == '1': self.sorttableWidgetDispalydata[str(num)] = tableWidgetDispalydataAll[i] num += 1 else: self.sorttableWidgetDispalydata = tableWidgetDispalydataAll except Exception as e: app_logger.log_error(e) def sorttableWidgetDisplayChange(self): try: text = self.text logall = self.severpost_nomeassge("tableWidgetDisplayChange", "/%s" % self.selectedtime, "", "") self.sortlogchange = {} num = 0 if text != "": for i in logall.keys(): if str(text) in str(logall[i]): self.sortlogchange[str(num)] = logall[i] num += 1 else: self.sortlogchange = logall except Exception as e: app_logger.log_error(e) def sorttableWidgetPeopleDisplay(self): try: if self.displayselect_mode == "" or self.displayselect_mode == []: text = self.text self.peopleOnJob = [""] bc = self.selectedbc nowDaystr = self.selectedtime # 选择的日期 diplaylistall = self.severpost_nomeassge("qtPeopleLoad", "/%s" % nowDaystr, "/%s" % bc, "") self.sortdiplaylist = {} num = 0 if text != "": for i in diplaylistall.keys(): if str(text) in str(diplaylistall[i]): self.sortdiplaylist[str(num)] = diplaylistall[i] num += 1 else: self.sortdiplaylist = diplaylistall for i in self.sortdiplaylist.keys(): self.peopleOnJob.append(self.sortdiplaylist[i]["姓名"]) else: names = self.displayselect_mode text = self.text self.peopleOnJob = [""] bc = self.selectedbc nowDaystr = self.selectedtime # 选择的日期 diplaylistall = self.severpost_nomeassge("qtPeopleLoad", "/%s" % nowDaystr, "/%s" % bc, "") self.sortdiplaylist = {} num = 0 if text != "": for i in diplaylistall.keys(): if str(text) in str(diplaylistall[i]): for name in names: if str(name) in str(diplaylistall[i]): self.sortdiplaylist[str(num)] = diplaylistall[i] num += 1 else: for i in diplaylistall.keys(): for name in names: if str(name) in str(diplaylistall[i]): self.sortdiplaylist[str(num)] = diplaylistall[i] num += 1 for i in self.sortdiplaylist.keys(): self.peopleOnJob.append(self.sortdiplaylist[i]["姓名"]) except Exception as e: app_logger.log_error(e) def sorttableWidgetLOGDispaly(self): try: text = self.text logall = self.severpost_nomeassge("tableWidgetLOGDispaly", "/%s" % self.selectedtime, "", "") self.sortlog = {} num = 0 if text != "": for i in logall.keys(): if str(text) in str(logall[i]): self.sortlog[str(num)] = logall[i] num += 1 else: self.sortlog = logall except Exception as e: app_logger.log_error(e) class MainWidget(QWidget, Ui_Form): LoginWidget_signal = QtCore.pyqtSignal(str) def __init__(self): super().__init__() try: # 新增:防抖定时器 self.debounce_timer = QtCore.QTimer(self) self.debounce_timer.setSingleShot(True) self.debounce_timer.timeout.connect(self.debounced_search) self.debounce_delay = 300 # 防抖延迟时间(毫秒) self.displaySelectstr3 = "0" self.displaySelect_mode = "1" self.localip = None self.severupdatests = "0" self.localtoken = None self.searchpeoplestr = [] self.sorttableWidgetDispalydata = {} self.sorttableWidgetDispalydataALL = {} self.sortdiplaylist = {} self.peopleOnJob = [""] self.loginSts = False self.amroLoginSts = False self.findSever = False self.FLIGHTonChange_text = "" self.threadpool = QThreadPool() self.setupUi(self) # self.show() self.loginWidget = loginWidget.LoginWidget() self.findServerWidget = FindServerWidget.findServerWidget() # self.amroLoginWidget = amroLoginWidget() if self.findSever: pass # if self.loginSts: # self.show() # else: # self.loginWidget.show() else: self.findServerWidget.show() self.findServerWidget.selectServer_signal.connect(self.setServer) # self.amroLoginWidget.amroLogin_signal.connect(self.displayMain) # data except Exception: pass def setServer(self, *args): try: self.ipinfo = args[0] + ':7162' self.clickrow = "" self.clickcolumn = "" # print(self.ipinfo) self.version = versionNumb self.findServerWidget.close() self.loginWidget.ipinfo = self.ipinfo self.loginWidget.login_signal.connect(self.displayMain) self.loginWidget.login_user.connect(self.setUser) checksts = 0 ip = "http://" + str(self.ipinfo) + "/static/remoteCheck2/"+self.version res = requests.get(url=ip, timeout=180).json() if res["返回值"] == "ok": checksts = 1 if checksts == 1: if self.loginSts: self.initDisplay() self.show() else: self.loginWidget.show() else: QMessageBox.warning(self, "提示", "有新版更新!请前往NAS共享平台[机务一队/天府机务分部/31准备组无纸化办公/1航班助手]获取电子白板最新版本!!") self.close() except Exception: pass def judge_bc(self): try: nowDay = datetime.date.today().strftime("%Y%m%d") nowDay_1 = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y%m%d") nowDay_str2 = datetime.date.today().strftime("%Y-%m-%d") a_str = nowDay_str2 + " 04:30:00" b_str = nowDay_str2 + " 20:30:00" a = datetime.datetime.strptime(a_str, "%Y-%m-%d %H:%M:%S") b = datetime.datetime.strptime(b_str, "%Y-%m-%d %H:%M:%S") nowtime = datetime.datetime.now() if a < nowtime < b: self.selectedtime = nowDay self.selectedtime_bc = "A" elif b < nowtime: self.selectedtime = nowDay self.selectedtime_bc = "B" elif nowtime < a: self.selectedtime = nowDay_1 self.selectedtime_bc = "B" except Exception: pass def initDisplay(self): try: self.oldjsondata = None self.cookie = None self.fl = None self.tts = QTextToSpeech() self.tts.setEngine('sapi') self.judge_bc() self.displayMode = "A" self.displayLabel = headerlabel0 self.tableWidgetFlight.setColumnCount(len(self.displayLabel)) self.tableWidgetFlight.verticalHeader().setVisible(False) self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel) self.tableWidgetFlight.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) self.tableWidgetFlight.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows) # self.lineEdit_phonenum.setText("") #self.checkBox.stateChanged.connect(self.displayChange) self.checkBox.setChecked(True) self.checkBox_2.stateChanged.connect(self.displaySelect2) self.checkBox_2.setChecked(True) self.checkBox_3.stateChanged.connect(self.displaySelect3) self.checkBox_3.setChecked(False) self.pushbutton_searchflight.clicked.connect(self.FLIGHTonChangeman) self.lineEdit_flight.textEdited[str].connect(lambda: self.changebackground()) #self.lineEdit_flight.textChanged.connect(self.FLIGHTonChange) self.lineEdit_flight.textChanged.connect(self.on_search_text_changed) self.serchTimer = QTimer() self.serchTimer.start(150 * 1000) self.serchTimer.timeout.connect(self.QThreadSortTimer) self.updatecheck() except Exception: pass def on_search_text_changed(self): """文本变化时重置定时器""" self.debounce_timer.start(self.debounce_delay) def debounced_search(self): """实际触发搜索的方法""" self.FLIGHTonChange_text = self.lineEdit_flight.text() self.QThreadSortNow("search") def changebackground(self): try: FLIGHTonChange_text = self.lineEdit_flight.text() if FLIGHTonChange_text != "": self.lineEdit_flight.setStyleSheet("background-color:yellow;color:red;font-weight:bold") else: self.lineEdit_flight.setStyleSheet("background-color:white") except Exception: pass def FLIGHTonChange(self): try: self.FLIGHTonChange_text = self.lineEdit_flight.text() # print(self.FLIGHTonChange_text) self.QThreadSortNow("search") except Exception: pass def FLIGHTonChangeman(self): try: self.FLIGHTonChange_text = self.lineEdit_flight.text() # print(self.FLIGHTonChange_text) self.QThreadSortNow("main") except Exception: pass def updatecheck(self): try: ip = "http://" + str(self.ipinfo) + "/static/updatecheck" res = requests.get(url=ip, timeout=30).json() if res["返回值"] == "1": self.label_11.setText("正 常") self.label_11.setStyleSheet( "background-color:green;color:white;border-radius:5px;padding:2px;font-weight:bold") if self.severupdatests != "1": self.severupdatests = "1" elif res["返回值"] == "0": self.label_11.setText("未更新") self.label_11.setStyleSheet("background-color:yellow;red:white;border-radius:5px;padding:2px;font-weight:bold") except Exception: self.label_11.setText("已断开") self.label_11.setStyleSheet("background-color:red;color:white;border-radius:5px;padding:2px;font-weight:bold") def displaySelect2(self): try: displaySelect = self.sender() if displaySelect.isChecked(): self.displaySelectstr2 = "1" if self.loginSts == True: if self.displaySelectstr3 == "1": self.displaySelect_mode = "3" else: self.displaySelect_mode = "1" self.QThreadSortNow("main") else: self.displaySelectstr2 = "0" self.displaySelect_mode = "0" if self.loginSts == True: if self.displaySelectstr3 == "1": self.checkBox_3.setChecked(False) else: self.QThreadSortNow("main") except Exception: pass def displaySelect3(self): try: displaySelect = self.sender() if displaySelect.isChecked(): self.displaySelectstr3 = "1" self.displaySelect_mode = "3" if self.loginSts == True: if self.displaySelectstr2 == "0": self.checkBox_2.setChecked(True) else: self.QThreadSortNow("main") else: self.displaySelectstr3 = "0" if self.loginSts == True: if self.displaySelectstr2 == "0": self.displaySelect_mode = "0" else: self.displaySelect_mode = "1" self.QThreadSortNow("main") except Exception: pass def displayMain(self, *args): try: if args[0]: self.initDisplay() self.loginSts = True self.loginWidget.close() self.show() self.QThreadSortNow("main") except Exception: pass def setUser(self, args): try: self.user = args[1] self.authority = args[3] self.label_username.setText(self.user) except Exception: pass def QThreadSortDispalyTimer(self, name, dict, dict2, seversts, displayMode): try: if name == "sortTableWidgetDispaly": if displayMode == "A": self.displayLabel = headerlabel0 self.tableWidgetFlight.setColumnCount(len(self.displayLabel)) self.tableWidgetFlight.verticalHeader().setVisible(False) self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel) elif displayMode == "B": self.displayLabel = headerlabel_B self.tableWidgetFlight.setColumnCount(len(self.displayLabel)) self.tableWidgetFlight.verticalHeader().setVisible(False) self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel) self.sorttableWidgetDispalydata = {} self.sorttableWidgetDispalydata = dict self.sorttableWidgetDispalydataALL={} self.sorttableWidgetDispalydataALL = dict self.tableWidgetDispaly() # print(self.sorttableWidgetDispalydata) if seversts == "0": self.severupdatests = "-" self.label_11.setText("已断开") self.label_11.setStyleSheet( "background-color:red;color:white;border-radius:5px;padding:2px;font-weight:bold") elif seversts == "1" and self.severupdatests == "1": self.label_11.setText("正 常") self.label_11.setStyleSheet( "background-color:green;color:white;border-radius:5px;padding:2px;font-weight:bold") elif seversts == "1" and self.severupdatests == "0": self.label_11.setText("未更新") self.label_11.setStyleSheet( "background-color:yellow;color:red;border-radius:5px;padding:2px;font-weight:bold") except Exception: pass def QThreadSortDispalyNow(self, name, dict, dict2, seversts, displayMode): try: if name == "sortTableWidgetDispaly": if displayMode == "A": self.displayLabel = headerlabel0 self.tableWidgetFlight.setColumnCount(len(self.displayLabel)) self.tableWidgetFlight.verticalHeader().setVisible(False) self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel) else: self.displayLabel = headerlabel_B self.tableWidgetFlight.setColumnCount(len(self.displayLabel)) self.tableWidgetFlight.verticalHeader().setVisible(False) self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel) self.sorttableWidgetDispalydata = {} self.sorttableWidgetDispalydata = dict self.sorttableWidgetDispalydataALL = {} self.sorttableWidgetDispalydataALL = dict # print(self.sorttableWidgetDispalydata) self.tableWidgetDispaly() elif name == "SearchsortTableWidgetDispaly": if displayMode == "A": self.displayLabel = headerlabel0 self.tableWidgetFlight.setColumnCount(len(self.displayLabel)) self.tableWidgetFlight.verticalHeader().setVisible(False) self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel) elif displayMode == "B": self.displayLabel = headerlabel_B self.tableWidgetFlight.setColumnCount(len(self.displayLabel)) self.tableWidgetFlight.verticalHeader().setVisible(False) self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel) self.sorttableWidgetDispalydata = {} self.sorttableWidgetDispalydata = dict self.tableWidgetDispaly() # print(self.sorttableWidgetDispalydata) if seversts == "0": self.severupdatests = "-" self.label_11.setText("已断开") self.label_11.setStyleSheet( "background-color:red;color:white;border-radius:5px;padding:2px;font-weight:bold") elif seversts == "1" and self.severupdatests == "1": self.label_11.setText("正 常") self.label_11.setStyleSheet( "background-color:green;color:white;border-radius:5px;padding:2px;font-weight:bold") elif seversts == "1" and self.severupdatests == "0": self.label_11.setText("未更新") self.label_11.setStyleSheet( "background-color:yellow;color:red;border-radius:5px;padding:2px;font-weight:bold") except Exception: pass def QThreadSortTimer(self): try: if self.loginSts == True: # print("多线程刷新1") self.judge_bc() self.FLIGHTonChange_text = self.lineEdit_flight.text() th1 = QThread() self.sortTableWidgetDispalyThread1 = sortdisplaySever("sortTableWidgetDispaly", self.ipinfo, self.selectedtime, self.FLIGHTonChange_text, self.displayMode, "1", self.displaySelect_mode, th1) self.sortTableWidgetDispalyThread1.sortupdate.connect(self.QThreadSortDispalyTimer) self.sortTableWidgetDispalyThread1.moveToThread(th1) th1.started.connect(self.sortTableWidgetDispalyThread1.run) th1.start() self.updatecheck() except Exception: pass def QThreadSortNow(self, name): try: if "main" in str(name): # print(datetime.datetime.now()) th11 = QThread() self.sortTableWidgetDispalyThread11 = sortdisplaySever("sortTableWidgetDispaly", self.ipinfo, self.selectedtime, self.FLIGHTonChange_text, self.displayMode, "1", self.displaySelect_mode, th11) try: self.sortTableWidgetDispalyThread11.sortupdate.disconnect() except TypeError: pass self.sortTableWidgetDispalyThread11.sortupdate.connect(self.QThreadSortDispalyNow) self.sortTableWidgetDispalyThread11.moveToThread(th11) th11.started.connect(self.sortTableWidgetDispalyThread11.run) th11.start() elif "search" in str(name): # print(datetime.datetime.now()) th111 = QThread() self.sortTableWidgetDispalyThread111 = sortdisplaySever("SearchsortTableWidgetDispaly", self.ipinfo, self.selectedtime, self.FLIGHTonChange_text, self.displayMode, self.sorttableWidgetDispalydataALL, self.displaySelect_mode, th111) self.sortTableWidgetDispalyThread111.sortupdate.connect(self.QThreadSortDispalyNow) self.sortTableWidgetDispalyThread111.moveToThread(th111) th111.started.connect(self.sortTableWidgetDispalyThread111.run) th111.start() except Exception: pass def enter_item_slot(self, item): try: self.tool_tip = item.text() # print("self.tool_tip:", self.tool_tip) except Exception: pass def tableWidgetDispaly(self): try: selftaxi = ["166", "166L", "166R", "167", "167L", "167R", "168", "169", "170", "171", "172", "173", "174", "269", "270", "271", "272", "273", "274", "275", "287", "288", "601", "602", "603", "604", "605", "606", "607", "607L", "607R"] # 自滑位 if self.sorttableWidgetDispalydata != "": # print("刷新开始") # dateNow=datetime.datetime.now() tableWidgetDispalydata = self.sorttableWidgetDispalydata col = len(self.displayLabel) self.tableWidgetFlight.setRowCount(len(tableWidgetDispalydata.keys())) for row in tableWidgetDispalydata.keys(): for colNum in range(0, col): if colNum == 13: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) elif colNum == 15: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) elif colNum == 18: if tableWidgetDispalydata[row][str(colNum)] in selftaxi and tableWidgetDispalydata[row][str(colNum)] != "": self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("lightgreen")) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("black")) elif tableWidgetDispalydata[row][str(colNum)] not in selftaxi or tableWidgetDispalydata[row][str(colNum)] == "": self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"]))) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"]))) font = QFont() # font.setFamily("SimHei") font.setFamily("Microsoft YaHei") font.setBold(True) self.tableWidgetFlight.item(int(row), colNum).setFont(font) elif colNum == 19: if tableWidgetDispalydata[row][str(colNum)] == "短停送" or tableWidgetDispalydata[row][str(colNum)] == "特后前送": self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"]))) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str("blue"))) font = QFont() font.setFamily("Microsoft YaHei") font.setBold(True) self.tableWidgetFlight.item(int(row), colNum).setFont(font) else: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"]))) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"]))) elif 19 < colNum < 31: if "√" in tableWidgetDispalydata[row][str(colNum)] or tableWidgetDispalydata[row][str(colNum)] == "": self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]).replace("*",""))) self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"]))) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"]))) if tableWidgetDispalydata[row][str(colNum)] != "" and "√" not in tableWidgetDispalydata[row][str(colNum)]: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]).replace("*",""))) self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("yellow")) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("black")) elif colNum == 61: if str(tableWidgetDispalydata[row][str(colNum)]) != "" and str(tableWidgetDispalydata[row][str(colNum)]) != None: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("yellow")) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("red")) font = QFont() font.setFamily("Microsoft YaHei") font.setBold(True) self.tableWidgetFlight.item(int(row), colNum).setFont(font) else: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"]))) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"]))) font = QFont() font.setFamily("Microsoft YaHei") font.setBold(True) self.tableWidgetFlight.item(int(row), colNum).setFont(font) elif colNum == 49: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) if tableWidgetDispalydata[row][str(colNum)] != "": for i in tableWidgetDispalydata[row][str(colNum)].split(","): if "√" not in i: self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("yellow")) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("black")) break else: self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"]))) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"]))) else: self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"]))) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"]))) elif colNum == 51: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) if tableWidgetDispalydata[row][str(colNum)] != "" and "√" not in tableWidgetDispalydata[row][str(colNum)]: self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("yellow")) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("black")) else: self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"]))) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"]))) elif 0 < colNum < 11: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]))) elif colNum == 0: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(int(row)+1))) else: self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem( str(tableWidgetDispalydata[row][str(colNum)]))) if colNum not in [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,49,51, 61]: self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"]))) self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"]))) if colNum not in [4 , 6]: self.tableWidgetFlight.item(int(row), colNum).setTextAlignment(Qt.AlignmentFlag.AlignCenter) else: self.tableWidgetFlight.item(int(row), colNum).setTextAlignment(Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignCenter) self.tableWidgetFlight.setRowHeight(int(row), 35) if self.displayMode == "A": settips={0:"53",4:"62",49:"50",19:"47",11:"57",13:"57",15:"57",45:"45",61:"61",6:"17",38:"40",} for key,value in settips.items(): if self.tableWidgetFlight.item(int(row), key): self.tableWidgetFlight.item(int(row), key).setToolTip("%s" % (str(tableWidgetDispalydata[row][str(value)]))) else: self.tableWidgetFlight.item(int(row), 0).setToolTip("[%s,%s]" % ( str(tableWidgetDispalydata[row][str(col - 5)]),str(tableWidgetDispalydata[row][str(col - 4)]))) for ii in range (1,4): self.tableWidgetFlight.item(int(row), ii).setToolTip("%s" % str(tableWidgetDispalydata[row][str(24)])) if self.displayMode == "A": self.tableWidgetFlight.resizeColumnsToContents() self.tableWidgetFlight.setWordWrap(True) for i in range(col): if i in [1,2,3,5,7,8,9,10,12,14,16,17,20,22,24,26,28,30,32,34,36,39,40,42,43,44,46,47,48,50,52,53,54,55,56,57,58,59,60,62,63,64,65]: self.tableWidgetFlight.setColumnHidden(i, True) else: self.tableWidgetFlight.setColumnHidden(i, False) if i in [21, 23, 25, 27, 29, 31]: self.tableWidgetFlight.setColumnWidth(i, 70) elif i in [45]: self.tableWidgetFlight.setColumnWidth(i, 45) else: for i in range(col): if i in [col - 9, col - 11, col - 12,19,20,21,22,23,28,29,30,31]: self.tableWidgetFlight.setColumnHidden(i, True) else: self.tableWidgetFlight.setColumnHidden(i, False) self.tableWidgetFlight.resizeColumnsToContents() self.tableWidgetFlight.setColumnWidth(10, 70) self.tableWidgetFlight.setColumnWidth(11, 70) self.tableWidgetFlight.setColumnWidth(12, 70) self.tableWidgetFlight.setColumnWidth(13, 70) self.tableWidgetFlight.setColumnWidth(14, 70) self.tableWidgetFlight.setColumnWidth(15, 70) self.tableWidgetFlight.setColumnWidth(22, 45) except Exception as e: app_logger.log_error(e) if __name__ == '__main__': app = QApplication(sys.argv) mw = MainWidget() sys.exit(app.exec())