This commit is contained in:
2025-10-10 17:16:08 +08:00
parent ed947743fc
commit 062b1e24e9
281 changed files with 536 additions and 109 deletions

View File

@@ -1,5 +1,7 @@
from PySide6.QtWidgets import QWidget, QLabel
from codes.common import clibs
class W01Setting(QWidget):
def __init__(self, parent=None):
@@ -15,6 +17,7 @@ class W01Setting(QWidget):
def ui_init(self):
self.lb_test = QLabel(f"testing text on widget: \n{__file__}", parent=self)
self.lb_test.setObjectName("lb_test")
def setup_slot(self):
...

View File

@@ -1,10 +1,11 @@
from PySide6.QtWidgets import QWidget, QLabel, QMessageBox, QVBoxLayout, QTreeWidget, QHeaderView, QHBoxLayout, QPushButton, QFrame, QLineEdit, QCheckBox, QTreeWidgetItem, QDialog, QPlainTextEdit, QApplication
from PySide6.QtCore import Qt, Signal
from PySide6.QtGui import QColor, QIcon, QFont, QKeySequence, QIntValidator, QShortcut
from PySide6.QtCore import Qt, Signal, QSize
from PySide6.QtGui import QColor, QIcon, QKeySequence, QIntValidator, QShortcut
from codes.common.signal_bus import signal_bus
from codes.common import db_operation
from codes.common import clibs
from codes.common.qss_reloader import qss_reloader
class LogDialog(QDialog):
@@ -52,7 +53,6 @@ class PageNumberInput(QDialog):
self.le_page_number = QLineEdit(self)
self.le_page_number.setText("1")
self.le_page_number.selectAll()
self.le_page_number.setFont(QFont('Consolas', 14))
self.le_page_number.setValidator(QIntValidator(0, 9999999, self))
layout_h.addWidget(self.le_page_number, stretch=4)
layout_h.addStretch(1)
@@ -75,71 +75,89 @@ class ClickableLabel(QLabel):
class W08Log(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.predos()
self.pre_do()
self.ui_init()
self.setup_slot()
self.setup_sc()
self.post_do()
def predos(self):
def pre_do(self):
self.records, self.len_records = "", ""
self.is_searching = False
self.max_item_number = clibs.config["log_number_per_page"]
def ui_init(self):
self.setObjectName("W08Log")
layout_v = QVBoxLayout(self)
self.treeW = QTreeWidget()
self.treeW.setUniformRowHeights(True)
self.treeW.setObjectName("treeW")
self.treeW.setHeaderLabels(["ID", "时间戳", "告警级别", "模块信息", "告警内容"])
header = self.treeW.header()
self.treeW.headerItem().setTextAlignment(0, Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter)
self.header = self.treeW.header()
self.header.setObjectName("header")
for i in range(self.treeW.columnCount()):
header.setSectionResizeMode(i, QHeaderView.ResizeMode.ResizeToContents)
self.header.setSectionResizeMode(i, QHeaderView.ResizeMode.ResizeToContents)
layout_v.addWidget(self.treeW, stretch=9)
layout_h = QHBoxLayout()
self.pb_previous = QPushButton("上一页")
self.pb_previous.setObjectName("pb_previous")
layout_h.addWidget(self.pb_previous, stretch=1)
self.lb_page = ClickableLabel("999999/999999")
self.lb_page.setObjectName("lb_page")
self.lb_page.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.lb_page.setMinimumWidth(144)
layout_h.addWidget(self.lb_page, stretch=2)
self.pb_next = QPushButton("下一页")
self.pb_next.setObjectName("pb_next")
layout_h.addWidget(self.pb_next, stretch=1)
layout_h.addStretch(9)
self.frame_checkbox = QFrame()
self.frame_checkbox.setObjectName("frame_checkbox")
layout_h_checkbox = QHBoxLayout()
self.box_info = QCheckBox("通知", parent=self.frame_checkbox)
self.box_info.setObjectName("box_info")
self.box_info.setChecked(True)
layout_h_checkbox.addWidget(self.box_info, stretch=1)
self.box_warning = QCheckBox("告警", parent=self.frame_checkbox)
self.box_warning.setObjectName("box_warning")
self.box_warning.setChecked(True)
layout_h_checkbox.addWidget(self.box_warning, stretch=1)
self.box_error = QCheckBox("错误", parent=self.frame_checkbox)
self.box_error.setObjectName("box_error")
self.box_error.setChecked(True)
layout_h_checkbox.addWidget(self.box_error, stretch=1)
self.box_exception = QCheckBox("异常", parent=self.frame_checkbox)
self.box_exception.setObjectName("box_exception")
self.box_exception.setChecked(True)
layout_h_checkbox.addWidget(self.box_exception, stretch=1)
self.box_unknown = QCheckBox("未知", parent=self.frame_checkbox)
self.box_unknown.setObjectName("box_unknown")
self.box_unknown.setChecked(True)
layout_h_checkbox.addWidget(self.box_unknown, stretch=1)
layout_h.addLayout(layout_h_checkbox, stretch=4)
self.le_search = QLineEdit()
self.le_search.setObjectName("le_search")
self.le_search.setPlaceholderText("告警内容")
self.le_search.setMinimumWidth(300)
layout_h.addWidget(self.le_search, stretch=5)
self.pb_search = QPushButton("查找")
self.pb_search.setObjectName("pb_search")
layout_h.addWidget(self.pb_search, stretch=1)
layout_v.addLayout(layout_h, stretch=1)
self.setLayout(layout_v)
def post_do(self):
qss_reloader.register(clibs.qss_w08_log, self)
self.setup_slot()
self.setup_sc()
def setup_slot(self):
self.treeW.itemDoubleClicked.connect(self.show_single_log)
self.pb_previous.clicked.connect(self.previous_page)
@@ -154,14 +172,14 @@ class W08Log(QWidget):
def previous_page(self):
if not self.is_searching:
self.records, self.len_records = db_operation.db_query_logs(True)
self.records, self.len_records = db_operation.db_query_logs(None)
current, total = self.lb_page.text().split("/")
page_number = int(current) - 1
self.show_page(self.records, self.len_records, page_number=page_number)
def next_page(self):
if not self.is_searching:
self.records, self.len_records = db_operation.db_query_logs(True)
self.records, self.len_records = db_operation.db_query_logs(None)
current, total = self.lb_page.text().split("/")
page_number = int(current) + 1
self.show_page(self.records, self.len_records, page_number=page_number)
@@ -180,7 +198,7 @@ class W08Log(QWidget):
QMessageBox().warning(None, "警告", "至少选择一个过滤器!")
return
self.records, self.len_records = db_operation.db_query_logs(levels=levels)
self.records, self.len_records = db_operation.db_query_logs(levels)
if search_text:
self.records, self.len_records = db_operation.db_query_logs(search_text, self.records)
@@ -194,11 +212,11 @@ class W08Log(QWidget):
page_number = dlg.get_page_number()
if not self.is_searching:
self.records, self.len_records = db_operation.db_query_logs(True)
self.records, self.len_records = db_operation.db_query_logs(None)
self.show_page(self.records, self.len_records, page_number=page_number)
def show_latest_page(self):
self.records, self.len_records = db_operation.db_query_logs(True)
self.records, self.len_records = db_operation.db_query_logs(None)
self.is_searching = False
self.box_info.setChecked(True)
self.box_warning.setChecked(True)
@@ -237,15 +255,23 @@ class W08Log(QWidget):
idx_end = self.max_item_number * current
self.treeW.clear()
self.treeW.setUniformRowHeights(True)
for record in records[idx_start:idx_end]:
record = [str(_) for _ in record]
item = QTreeWidgetItem(self.treeW, record)
self.treeW.addTopLevelItem(item)
colors = {"info": QColor(144, 238, 144), "warning": QColor(255, 240, 210), "error": QColor(255, 220, 220), "exception": QColor(255, 220, 220), "unknown": QColor(255, 220, 220)}
color = colors[record[2]]
for col in range(5):
colors = {
"info": QColor(255, 255, 255), # 白色
"warning": QColor(244, 164, 96), # 棕橙色
"error": QColor(205, 92, 92), # 印度红
"exception": QColor(70, 130, 180), # 钢蓝色
"unknown": QColor(190, 190, 190) # 灰色
}
# colors = {"info": "#FFFFFF", "warning": "#F4A460", "error": "#CD5C5C", "exception": "#4682B4", "unknown": "#BEBEBE"}
level = record[2]
color = colors.get(level, QColor(255, 255, 255))
for col in range(self.treeW.columnCount()):
item.setBackground(col, color)
item.setTextAlignment(0, Qt.AlignmentFlag.AlignRight)
self.treeW.addTopLevelItem(item)
self.treeW.scrollToBottom()
def show_single_log(self, item, column):

View File

@@ -15,6 +15,7 @@ class W09About(QWidget):
def ui_init(self):
self.lb_test = QLabel(f"testing text on widget: \n{__file__}", parent=self)
self.lb_test.setObjectName("lb_test")
def setup_slot(self):
...

View File

@@ -15,6 +15,7 @@ class W10Practical(QWidget):
def ui_init(self):
self.lb_test = QLabel(f"testing text on widget: \n{__file__}", parent=self)
self.lb_test.setObjectName("lb_test")
def setup_slot(self):
...

View File

@@ -15,6 +15,7 @@ class W20Efficiency(QWidget):
def ui_init(self):
self.lb_test = QLabel(f"testing text on widget: \n{__file__}", parent=self)
self.lb_test.setObjectName("lb_test")
def setup_slot(self):
...

View File

@@ -15,6 +15,7 @@ class W30Financial(QWidget):
def ui_init(self):
self.lb_test = QLabel(f"testing text on widget: \n{__file__}", parent=self)
self.lb_test.setObjectName("lb_test")
def setup_slot(self):
...