findServerWidget.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. import os
  2. from PyQt6 import QtCore
  3. from PyQt6.QtCore import QThreadPool
  4. from PyQt6.QtCore import Qt
  5. from PyQt6.QtGui import QColor , QFont
  6. from PyQt6.QtWidgets import QWidget , QAbstractItemView , QMessageBox , QTableWidgetItem
  7. from Functions.apiFunction import api_fc
  8. from Functions import serverFind
  9. from UI.findserver import Ui_FormLink
  10. from UI.mapWeb import Ui_FormMapWeb
  11. from .LogerinTxt import app_logger
  12. from .Worker2 import Worker2
  13. class mapWebWidget(Ui_FormMapWeb, QWidget):
  14. def __init__(self):
  15. super().__init__()
  16. self.setupUi(self)
  17. # self.webEngineView.load(QUrl('http://192.168.2.22:6010/'))
  18. class findServerWidget(Ui_FormLink, QWidget):
  19. selectServer_signal = QtCore.pyqtSignal(str)
  20. def __init__(self, parent=None):
  21. super().__init__(parent)
  22. try:
  23. self.threadpool = QThreadPool()
  24. self.setupUi(self)
  25. self.serverList = []
  26. self.tableWidget.setColumnCount(2)
  27. self.tableWidget.setHorizontalHeaderLabels(['服务器地址', '备注'])
  28. self.threadWork_findServer()
  29. self.tableWidget.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
  30. self.tableWidget.cellDoubleClicked.connect(self.selectServer)
  31. self.pushButton_manset.clicked.connect(self.setipinfo)
  32. except Exception as e:
  33. app_logger.log_error(e)
  34. def setipinfo(self):
  35. try:
  36. self.ipinfo = ""
  37. if os.path.exists("server.code") is True:
  38. read_path = os.getcwd() + "\\server.code"
  39. with open(read_path, "r", encoding="utf-8") as f2:
  40. rember_2 = f2.read()
  41. if ';' in rember_2:
  42. self.ipinfo = rember_2.split(';')[0]
  43. self.ipinfo1 = rember_2.split(':')[0]
  44. #ip = "http://" + str(self.ipinfo) + "/static/linktest"
  45. try:
  46. #res = requests.get(url=ip, timeout=30).json()
  47. res=api_fc.request_get_without_token("/static/linktest")
  48. self.selectServer_signal.emit(self.ipinfo1)
  49. if res['status'] == "ok":
  50. QMessageBox.warning(self, "提示", "服务器人工配置成功!")
  51. else:
  52. QMessageBox.warning(self, "提示", "服务器人工配置失败,请检查配置文件或联系管理员检查服务器!")
  53. except Exception as e:
  54. QMessageBox.warning(self, "提示", "服务器人工配置失败,请联系管理员检查服务器!")
  55. app_logger.log_error(e)
  56. else:
  57. QMessageBox.warning(self, "提示", "服务器人工配置失败,请检查配置文件或联系管理员检查服务器!")
  58. else:
  59. QMessageBox.warning(self, "提示", "服务器人工配置失败,系统缺少配置文件!")
  60. except Exception as e:
  61. app_logger.log_error(e)
  62. def setipinfo2(self):
  63. try:
  64. self.ipinfo = ""
  65. if os.path.exists("server.code") is True:
  66. read_path = os.getcwd() + "\\server.code"
  67. with open(read_path, "r", encoding="utf-8") as f2:
  68. rember_2 = f2.read()
  69. if ';' in rember_2:
  70. self.ipinfo = rember_2.split(';')[0]
  71. self.ipinfo1 = rember_2.split(':')[0]
  72. #ip = "http://" + str(self.ipinfo) + "/static/linktest"
  73. try:
  74. #res = requests.get(url=ip, timeout=30).json()
  75. res=api_fc.request_get_without_token("/static/linktest")
  76. self.selectServer_signal.emit(self.ipinfo1)
  77. if res['status'] == "ok":
  78. QMessageBox.warning(self, "提示", "服务器搜索失败,自动检索配置文件配置成功!")
  79. else:
  80. QMessageBox.warning(self, "提示", "服务器搜索失败,自动检索配置文件配置成功,服务器连接失败,请检查配置文件或联系管理员检查服务器!")
  81. except Exception as e:
  82. QMessageBox.warning(self, "提示", "服务器搜索失败,自动检索配置文件配置成功,服务器连接失败,请检查配置文件或联系管理员检查服务器!")
  83. app_logger.log_error(e)
  84. else:
  85. QMessageBox.warning(self, "提示", "服务器搜索失败,自动检索配置文件配置失败,请检查配置文件或联系管理员检查服务器!")
  86. else:
  87. QMessageBox.warning(self, "提示", "服务器搜索失败,自动检索配置文件配置失败,系统缺少配置文件!")
  88. except Exception as e:
  89. app_logger.log_error(e)
  90. def selectServer(self, row, col):
  91. #print('selectServer')
  92. #print(self.tableWidget.item(row, 0).text())
  93. try:
  94. self.selectServer_signal.emit(self.tableWidget.item(row, 0).text())
  95. except Exception as e:
  96. app_logger.log_error(e)
  97. def threadWork_findServer(self):
  98. try:
  99. worker = Worker2(self.fn)
  100. worker.signals.result.connect(self.print_out_result)
  101. self.threadpool.start(worker)
  102. except Exception as e:
  103. app_logger.log_error(e)
  104. def fn(self):
  105. try:
  106. serverList = serverFind.findServer()
  107. return serverList
  108. except Exception as e:
  109. app_logger.log_error(e)
  110. def print_out_result(self, dlist):
  111. try:
  112. unique_tuples = list(set(tuple(sublist) for sublist in dlist))
  113. self.serverList = [list(t) for t in unique_tuples]
  114. # print(self.serverList)
  115. if self.serverList == [] or self.serverList ==None:
  116. self.setipinfo2()
  117. else:
  118. self.tableWidget.setRowCount(len(self.serverList))
  119. rowNum = 0
  120. for row in self.serverList:
  121. colNum = 0
  122. for col in row:
  123. self.tableWidget.setItem(rowNum, colNum, QTableWidgetItem(col))
  124. self.tableWidget.item(rowNum, colNum).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  125. if "测试服务器" in row[1]:
  126. self.tableWidget.item(rowNum, colNum).setForeground(QColor('pink'))
  127. elif row[1] == "主服务器":
  128. self.tableWidget.item(rowNum, colNum).setForeground(QColor('green'))
  129. font = QFont()
  130. font.setFamily("Microsoft YaHei")
  131. font.setBold(True)
  132. self.tableWidget.item(rowNum, colNum).setFont(font)
  133. else:
  134. self.tableWidget.item(rowNum, colNum).setForeground(QColor('blue'))
  135. font = QFont()
  136. font.setFamily("Microsoft YaHei")
  137. font.setBold(True)
  138. self.tableWidget.item(rowNum , colNum).setFont(font)
  139. colNum += 1
  140. rowNum += 1
  141. self.tableWidget.resizeColumnsToContents()
  142. except Exception as e:
  143. app_logger.log_error(e)