修复一些问题

This commit is contained in:
2025-09-29 11:26:29 +08:00
parent 943130b875
commit ed947743fc
8 changed files with 130 additions and 69 deletions

View File

@@ -140,18 +140,16 @@ class MainWindow(QMainWindow):
else:
image_url = f"""https://www.bing.com{image["url"]}"""
file = Path(f"{clibs.base_path}/assets/media/bg/{image_name}.jpg")
try:
req = requests.get(image_url, stream=True, timeout=10)
with open(file, "wb") as f:
for chunk in req.iter_content(chunk_size=8192):
f.write(chunk)
except Exception as e:
pass
req = requests.get(image_url, stream=True, timeout=10)
with open(file, "wb") as f:
for chunk in req.iter_content(chunk_size=8192):
f.write(chunk)
# proverbs
hitokoto = "https://v1.hitokoto.cn/"
proverbs = []
proverb_file = Path(f"{clibs.base_path}/assets/media/hitokoto.json")
req = requests.get(hitokoto)
print(f"req.text = {req.text}")
if not proverb_file.exists():
proverb_file.touch()
proverb_file.write_text("[]")
@@ -160,7 +158,18 @@ class MainWindow(QMainWindow):
with open(proverb_file, mode="rt", encoding="utf-8") as f:
proverbs = json.load(f)
proverbs.append(eval(req.text))
proverb = json.loads(req.text)
if None in proverb.values():
for k, v in proverb.items():
if v is None:
if v == "from_who":
proverb.update({k: "佚名"})
elif v == "from":
proverb.update({k: "不知道"})
else:
proverb.update({k: "-"})
proverbs.append(proverb)
proverbs = del_repeat_proverb(proverbs)
with open(proverb_file, mode="wt", encoding="utf-8") as f:
json.dump(proverbs, f, ensure_ascii=False)

View File

@@ -10,20 +10,32 @@ from codes.common.signal_bus import signal_bus
class LunarClockLabel(QLabel):
def __init__(self, parent=None):
def __init__(self, parent=None, flag=0):
super().__init__(parent)
self.setMinimumWidth(350)
timer = QTimer(self)
timer.timeout.connect(self.update_time)
timer.start(1000)
self.update_time()
if flag == 0:
self.update_date()
timer.timeout.connect(self.update_date)
else:
self.update_time()
timer.timeout.connect(self.update_time)
def update_date(self):
dt = QDateTime.currentDateTime()
g = dt.date()
z = ZhDate.today()
week = "一二三四五六日"[g.dayOfWeek() - 1]
text = f"{g.year()}{g.month()}{g.day()}{z.chinese()[5:]} 星期{week}"
self.setText(text)
def update_time(self):
dt = QDateTime.currentDateTime()
g = dt.date()
z = ZhDate.today()
week = "一二三四五六日"[g.dayOfWeek() - 1]
text = f"{g.year()}{g.month()}{g.day()}{z.chinese()[5:]} 星期{week} {dt.toString('hh:mm:ss')}"
text = f"{dt.toString('hh:mm:ss')}"
self.setText(text)
@@ -54,6 +66,8 @@ class WidgetWithBg(QWidget):
self.lb_empty_up = QLabel(self)
layout_v.addWidget(self.lb_empty_up)
# 头像区
layout_h_1 = QHBoxLayout()
layout_h_1.addStretch(1)
self.lb_avatar = DoubleClickLabel(self)
self.lb_avatar.setAlignment(Qt.AlignmentFlag.AlignCenter)
avatar = QPixmap(clibs.avatar)
@@ -61,7 +75,15 @@ class WidgetWithBg(QWidget):
self.lb_avatar.setPixmap(avatar)
self.lb_avatar.setScaledContents(True)
self.lb_avatar.setFixedSize(144, 144)
layout_v.addWidget(self.lb_avatar, alignment=Qt.AlignmentFlag.AlignCenter)
layout_h_1.addWidget(self.lb_avatar)
self.lb_time = LunarClockLabel(self, flag=1)
self.lb_time.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.lb_time.setStyleSheet("color: rgba(255,255,255,255);")
self.lb_time.setFont(QFont("Arial Black", 56, QFont.Weight.Bold))
layout_h_1.addWidget(self.lb_time)
layout_h_1.addStretch(1)
layout_v.addLayout(layout_h_1)
# layout_v.addWidget(self.lb_avatar, alignment=Qt.AlignmentFlag.AlignCenter)
# 艺术字区
self.lb_name = QLabel(self)
self.lb_name.setAlignment(Qt.AlignmentFlag.AlignCenter)
@@ -99,13 +121,13 @@ class WidgetWithBg(QWidget):
self.line_right.setLineWidth(1)
self.line_right.setFixedWidth(100)
# 时间区-时间
self.lb_time = LunarClockLabel(self)
self.lb_time.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.lb_time.setStyleSheet("color: rgba(255,255,255,255);")
self.lb_time.setFont(QFont("Consolas", 12, QFont.Weight.Bold))
self.lb_date = LunarClockLabel(self)
self.lb_date.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.lb_date.setStyleSheet("color: rgba(255,255,255,255);")
self.lb_date.setFont(QFont("Consolas", 12, QFont.Weight.Bold))
layout_h.addStretch(1)
layout_h.addWidget(self.line_left)
layout_h.addWidget(self.lb_time)
layout_h.addWidget(self.lb_date)
layout_h.addWidget(self.line_right)
layout_h.addStretch(1)
layout_v.addLayout(layout_h)
@@ -141,10 +163,6 @@ class WidgetWithBg(QWidget):
self.lb_avatar.doubleClicked.connect(self.toggle_auth_show)
self.le_password.returnPressed.connect(self.validate_password)
signal_bus.home_overlay_auth.connect(self.toggle_auth_show)
# self.sc_caL = QShortcut(QKeySequence("Esc"), self)
# self.sc_caL.activated.connect(self.toggle_auth_show)
# self.sc_caS = QShortcut(QKeySequence("Ctrl+Alt+M"), self)
# self.sc_caS.activated.connect(signal_bus.ho_full_screen.emit)
def toggle_auth_show(self):
if self.le_is_visible:
@@ -178,7 +196,7 @@ class WidgetWithBg(QWidget):
self.hide_le_password()
return False
else:
QMessageBox.critical(self, "错误", "密码不正确,请确认后重新输入!")
# QMessageBox.critical(self, "错误", "密码不正确,请确认后重新输入!")
self.show_le_password()
return False

View File

@@ -1,4 +1,4 @@
from PySide6.QtWidgets import QWidget, QLabel, QMessageBox, QVBoxLayout, QTreeWidget, QHBoxLayout, QPushButton, QFrame, QLineEdit, QCheckBox, QTreeWidgetItem, QDialog
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
@@ -6,6 +6,30 @@ from codes.common.signal_bus import signal_bus
from codes.common import db_operation
from codes.common import clibs
class LogDialog(QDialog):
def __init__(self, content, parent=None):
super().__init__(parent)
self.setWindowTitle("日志详情")
self.setGeometry(100, 100, 700, 300)
self.center_on_screen()
layout = QVBoxLayout(self)
self.plain_text_edit = QPlainTextEdit()
self.plain_text_edit.setReadOnly(True)
self.plain_text_edit.setPlainText(content)
layout.addWidget(self.plain_text_edit)
def center_on_screen(self):
screen_geometry = QApplication.primaryScreen().geometry()
screen_width = screen_geometry.width()
screen_height = screen_geometry.height()
dialog_width = self.width()
dialog_height = self.height()
x = (screen_width - dialog_width) // 2
y = (screen_height - dialog_height) // 2
self.move(x, y)
class PageNumberInput(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
@@ -64,7 +88,11 @@ class W08Log(QWidget):
def ui_init(self):
layout_v = QVBoxLayout(self)
self.treeW = QTreeWidget()
self.treeW.setUniformRowHeights(True)
self.treeW.setHeaderLabels(["ID", "时间戳", "告警级别", "模块信息", "告警内容"])
header = self.treeW.header()
for i in range(self.treeW.columnCount()):
header.setSectionResizeMode(i, QHeaderView.ResizeMode.ResizeToContents)
layout_v.addWidget(self.treeW, stretch=9)
layout_h = QHBoxLayout()
@@ -113,6 +141,7 @@ class W08Log(QWidget):
self.setLayout(layout_v)
def setup_slot(self):
self.treeW.itemDoubleClicked.connect(self.show_single_log)
self.pb_previous.clicked.connect(self.previous_page)
self.pb_next.clicked.connect(self.next_page)
self.pb_search.clicked.connect(self.search_page)
@@ -153,9 +182,6 @@ class W08Log(QWidget):
self.records, self.len_records = db_operation.db_query_logs(levels=levels)
if search_text:
# ids = [_[0] for _ in self.records]
# placeholder = ",".join(ids)
# clibs.cursor.execute(f"SELECT * FROM logs WHERE id IN ({placeholder}) and content like ?", (ids + [search_text, ]))
self.records, self.len_records = db_operation.db_query_logs(search_text, self.records)
self.is_searching = True
@@ -219,6 +245,16 @@ class W08Log(QWidget):
color = colors[record[2]]
for col in range(5):
item.setBackground(col, color)
item.setTextAlignment(0, Qt.AlignmentFlag.AlignRight)
self.treeW.scrollToBottom()
def show_single_log(self, item, column):
log_id = f"id = {item.text(0)}"
log_ts = f"ts = {item.text(1)}"
log_level = f"level = {item.text(2)}"
log_module = f"module = {item.text(3)}\n"
deco_line = "=" * 40
log_msg = item.text(4)
content = "\n".join([log_id, log_ts, log_level, log_module, deco_line, log_msg])
dialog = LogDialog(content, self)
dialog.exec()