From e739f5d31a449f1e0bc59892fa485d94e0314d62 Mon Sep 17 00:00:00 2001 From: AMagicPear Date: Mon, 26 May 2025 23:43:55 +0800 Subject: [PATCH 1/3] =?UTF-8?q?refactor:=20=E5=85=88=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=B8=80=E7=82=B9=E7=82=B9=EF=BC=8C=E6=98=8E=E5=A4=A9=E5=86=8D?= =?UTF-8?q?=E7=BB=A7=E7=BB=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 8 +- Plain_Craft_Launcher_2/Application.py | 2 +- Plain_Craft_Launcher_2/FormMain.py | 61 ++++++++------- Plain_Craft_Launcher_2/FormMain.ui | 75 ------------------- Plain_Craft_Launcher_2/FormMain_ui.py | 57 ++++++++------ .../Modules/Base/ModSetup.py | 24 +++--- Plain_Craft_Launcher_2/build.sh | 21 ++++++ requirements.txt | 4 +- 8 files changed, 112 insertions(+), 140 deletions(-) delete mode 100644 Plain_Craft_Launcher_2/FormMain.ui create mode 100644 Plain_Craft_Launcher_2/build.sh diff --git a/.gitignore b/.gitignore index 725d02a..7588a2b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Editor Config -idea/ +.idea/ .vs/ +.vscode/ # Python Environment & Cache **/*venv*/ @@ -14,4 +15,7 @@ Plain_Craft_Launcher_2/data/*.log # Debugging Files **/.minecraft/ **/dist/* -nuitka-crash-report.xml \ No newline at end of file +nuitka-crash-report.xml + +# macOS FileSystem's Shit +.DS_Store \ No newline at end of file diff --git a/Plain_Craft_Launcher_2/Application.py b/Plain_Craft_Launcher_2/Application.py index ffdabee..afb928d 100644 --- a/Plain_Craft_Launcher_2/Application.py +++ b/Plain_Craft_Launcher_2/Application.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from PyQt5.QtWidgets import * +from PyQt5.QtWidgets import QApplication import sys from FormMain import FormMain diff --git a/Plain_Craft_Launcher_2/FormMain.py b/Plain_Craft_Launcher_2/FormMain.py index 11f71ce..41e6511 100644 --- a/Plain_Craft_Launcher_2/FormMain.py +++ b/Plain_Craft_Launcher_2/FormMain.py @@ -2,7 +2,7 @@ import sys import os from PyQt5.QtWidgets import QApplication, QWidget -from PyQt5.QtGui import QResizeEvent +from PyQt5.QtGui import QResizeEvent, QMouseEvent from PyQt5.QtCore import Qt, QPropertyAnimation, QEasingCurve, QRect from Modules.Base.ModLogging import ModLogging, LoggingType as LT @@ -13,6 +13,7 @@ from FormMain_ui import Ui_FormMain from Controls.RoundShadow import RoundShadow + class FormMain(RoundShadow): """主窗口""" @@ -20,24 +21,28 @@ def __init__(self): super().__init__() # 初始化日志 self.logger = ModLogging(module_name="FormMain") - + # 设置窗口标志,确保最小化时显示在任务栏 - self.setWindowFlags(Qt.FramelessWindowHint | Qt.Window | Qt.WindowSystemMenuHint | Qt.WindowMinimizeButtonHint) - + self.setWindowFlags( + Qt.FramelessWindowHint + | Qt.Window + | Qt.WindowSystemMenuHint + | Qt.WindowMinimizeButtonHint + ) + # 窗口加载第一步:基础 # 设置窗口大小 - self.resize(900, 550) + self.resize(850, 500) self.logger.write("窗口加载第一步完成", LT.INFO) - + # 窗口加载第二步:加载 UI 控件 # 创建一个容器widget self.container = QWidget(self) self.container.setGeometry(9, 9, self.width() - 18, self.height() - 18) - + # 设置UI self.ui = Ui_FormMain() self.ui.setupUi(self.container) - self.logger.write("窗口加载第二步完成", LT.INFO) @@ -45,15 +50,15 @@ def __init__(self): # 连接按钮事件 self.ui.BtnExit.clicked.connect(self.close_window) self.ui.BtnMin.clicked.connect(self.minimize_window) - + # 记录窗口是否最大化 self.is_maximized = False # 记录窗口正常状态下的位置和大小 self.normal_geometry = self.geometry() - + # 初始化拖动相关变量 self._drag_start_pos = None - + # 设置标题栏鼠标追踪 self.ui.PanTitle.setMouseTracking(True) self.ui.PanTitle.mousePressEvent = self.PanTitle_mousePressEvent @@ -64,33 +69,35 @@ def __init__(self): self.logger.write("FormMain 加载完成", LT.INFO) - def PanTitle_mousePressEvent(self, event): + def PanTitle_mousePressEvent(self, a0: QMouseEvent): """处理标题栏鼠标按下事件""" - if event.button() == Qt.LeftButton: - self._drag_start_pos = event.globalPos() - self.pos() - event.accept() + if a0.button() == Qt.LeftButton: + self._drag_start_pos = a0.globalPos() - self.pos() + a0.accept() - def PanTitle_mouseMoveEvent(self, event): + def PanTitle_mouseMoveEvent(self, a0: QMouseEvent): """处理标题栏鼠标移动事件""" if self._drag_start_pos is not None: - self.move(event.globalPos() - self._drag_start_pos) - event.accept() + self.move(a0.globalPos() - self._drag_start_pos) + a0.accept() - def PanTitle_mouseReleaseEvent(self, event): + def PanTitle_mouseReleaseEvent(self, a0: QMouseEvent): """处理标题栏鼠标释放事件""" - if event.button() == Qt.LeftButton: + if a0.button() == Qt.LeftButton: self._drag_start_pos = None - event.accept() + a0.accept() def resizeEvent(self, a0: QResizeEvent): """处理窗口大小变化""" super().resizeEvent(a0) # 更新容器大小 self.container.setGeometry(9, 9, self.width() - 18, self.height() - 18) - + # 更新面板大小 self.ui.PanTitle.setGeometry(0, 0, self.container.width(), 40) - self.ui.PanMain.setGeometry(0, 40, self.container.width(), self.container.height() - 40) + self.ui.PanMain.setGeometry( + 0, 40, self.container.width(), self.container.height() - 40 + ) def close_window(self): """处理窗口关闭(对应的信号:BtnExit.clicked)""" @@ -111,23 +118,21 @@ def minimize_window(self): """跨平台最小化窗口""" self.logger.write("按下按钮:BtnMin,正在尝试最小化窗口", LT.INFO) self.showMinimized() - + def toggle_maximize_window(self): """切换窗口最大化/还原状态""" if self.isMaximized(): self.restore_window() else: self.maximize_window() - + def maximize_window(self): """跨平台最大化窗口""" self.logger.write("按下按钮:BtnMax,正在尝试最大化窗口", LT.INFO) # 保存当前窗口位置和大小(如果需要) self.showMaximized() - + def restore_window(self): """跨平台还原窗口""" self.logger.write("按下按钮:BtnMax,正在尝试还原窗口", LT.INFO) self.showNormal() - - diff --git a/Plain_Craft_Launcher_2/FormMain.ui b/Plain_Craft_Launcher_2/FormMain.ui deleted file mode 100644 index 4e29afe..0000000 --- a/Plain_Craft_Launcher_2/FormMain.ui +++ /dev/null @@ -1,75 +0,0 @@ - - - FormMain - - - - 0 - 0 - 900 - 550 - - - - - 900 - 550 - - - - Plain Craft Launcher 2 - - - - :/.ico/icon.ico:/.ico/icon.ico - - - - - 0 - 0 - 900 - 40 - - - - - 900 - 40 - - - - background-color: blue; - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - 0 - 40 - 901 - 511 - - - - background-color: skyblue; - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - diff --git a/Plain_Craft_Launcher_2/FormMain_ui.py b/Plain_Craft_Launcher_2/FormMain_ui.py index 398c1d5..9998b82 100644 --- a/Plain_Craft_Launcher_2/FormMain_ui.py +++ b/Plain_Craft_Launcher_2/FormMain_ui.py @@ -11,57 +11,72 @@ from Controls.MyRoundButton import MyRoundButton from Modules.Base.ModSetup import ModSetup as Setup + class Ui_FormMain(object): + def setupUi(self, FormMain: QtWidgets.QWidget): # 获取所有需要的设置项 setup = Setup() - size = setup.get_settings('size') - corner_radius = setup.get_settings('corner_radius') - bg_color = setup.get_settings('ColorBrush5') - fg_color = setup.get_settings('ColorBrush2') - + size = setup.size + + corner_radius = setup.get_settings("corner_radius") + bg_color = setup.get_settings("ColorBrush5") + fg_color = setup.get_settings("ColorBrush2") + FormMain.setObjectName("FormMain") FormMain.resize(*size) FormMain.setBaseSize(QtCore.QSize(*size)) FormMain.setStyleSheet(f"background-color: transparent; ") icon = QtGui.QIcon() - icon.addPixmap(QtGui.QPixmap(":/.ico/icon.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off) + icon.addPixmap( + QtGui.QPixmap(":/.ico/icon.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off + ) FormMain.setWindowIcon(icon) - + # 标题栏 Panel self.PanTitle = QtWidgets.QFrame(FormMain) - self.PanTitle.setGeometry(QtCore.QRect(0, 0, size[0], 40)) - self.PanTitle.setBaseSize(QtCore.QSize(size[0], 40)) - self.PanTitle.setStyleSheet(f""" + self.PanTitle.setGeometry(QtCore.QRect(0, 0, size[0], 48)) + self.PanTitle.setBaseSize(QtCore.QSize(size[0], 48)) + self.PanTitle.setStyleSheet( + f""" QFrame#PanTitle {{ background-color: {fg_color}; border-top-left-radius: {corner_radius}px; border-top-right-radius: {corner_radius}px; border-bottom: none; }} - """) - self.PanTitle.setFrameShape(QtWidgets.QFrame.NoFrame) - self.PanTitle.setFrameShadow(QtWidgets.QFrame.Plain) + """ + ) + self.PanTitle.setFrameShape(QtWidgets.QFrame.NoFrame) + self.PanTitle.setFrameShadow(QtWidgets.QFrame.Plain) self.PanTitle.setObjectName("PanTitle") # 主 Panel self.PanMain = QtWidgets.QFrame(FormMain) - self.PanMain.setGeometry(QtCore.QRect(0, 40, size[0], (size[1] - 40))) - self.PanMain.setStyleSheet(f""" + self.PanMain.setGeometry(QtCore.QRect(0, 48, size[0], (size[1] - 48))) + self.PanMain.setStyleSheet( + f""" QFrame#PanMain {{ background-color: {bg_color}; border-bottom-left-radius: {corner_radius}px; border-bottom-right-radius: {corner_radius}px; border-top: none; }} - """) - self.PanMain.setFrameShape(QtWidgets.QFrame.NoFrame) - self.PanMain.setFrameShadow(QtWidgets.QFrame.Plain) + """ + ) + self.PanMain.setFrameShape(QtWidgets.QFrame.NoFrame) + self.PanMain.setFrameShadow(QtWidgets.QFrame.Plain) self.PanMain.setObjectName("PanMain") # 标题栏按钮 -- 退出 - self.BtnExit = MyRoundButton(self.PanTitle, svg_path="Images/BtnTitleClose.svg", size=(28, 28), tooltip="Exit", padding=(6, 6, -10, -10)) - self.BtnExit.setGeometry(QtCore.QRect((size[0] - 60), 4, 28, 28)) + self.BtnExit = MyRoundButton( + self.PanTitle, + svg_path="Images/BtnTitleClose.svg", + size=(14, 14), + tooltip="Exit", + padding=(7, 7, -10, -10), + ) + self.BtnExit.setGeometry(QtCore.QRect((size[0] - 50), 12, 13, 13)) self.BtnExit.setObjectName("BtnExit") # 标题栏按钮 -- 最小化 @@ -78,7 +93,6 @@ def setupUi(self, FormMain: QtWidgets.QWidget): self.SVGTitle.setStyleSheet("background-color: transparent;") self.SVGTitle.setObjectName("SVGTitle") - self.retranslateUi(FormMain) QtCore.QMetaObject.connectSlotsByName(FormMain) @@ -86,4 +100,5 @@ def retranslateUi(self, FormMain: QtWidgets.QWidget): _translate = QtCore.QCoreApplication.translate FormMain.setWindowTitle(_translate("FormMain", "Plain Craft Launcher 2")) + from Resources import * diff --git a/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py b/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py index ca43957..c32c707 100644 --- a/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py +++ b/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py @@ -3,22 +3,24 @@ from typing import Any from .ModLogging import ModLogging, LoggingType as LT + class ModSetup: """写入/读取设置相关的类""" + _instance = None - + def __new__(cls): """单例模式""" if cls._instance is None: cls._instance = super(ModSetup, cls).__new__(cls) cls._instance._initialized = False return cls._instance - + def __init__(self): if self._initialized: return self._initialized = True - + self.logger = ModLogging(module_name="ModSetup") self.load_settings() self.logger.write("ModSetup 加载完成", LT.INFO) @@ -26,7 +28,7 @@ def __init__(self): def setup_settings(self): """初始化设置项""" self.ColorBrush1 = "#343d4a" - self.ColorBrush2 = "#0b5bcb" + self.ColorBrush2 = "#0F6FCD" self.ColorBrush3 = "#1370f3" self.ColorBrush4 = "#4890f5" self.ColorBrush5 = "#96c0f9" @@ -35,12 +37,12 @@ def setup_settings(self): self.ColorBrush8 = "#eaf2fe" self.ColorBrushBg0 = "#96c0f9" self.ColorBrushBg1 = "#bee0eafd" - self.corner_radius = 10 - self.size = (900, 550) + self.corner_radius = 8 + self.size = (850, 500) self.logger.write("设置初始化完成", LT.INFO) - def load_settings(self, file_path:str="./data/Config.json"): + def load_settings(self, file_path: str = "./data/Config.json"): """读取已经存储的设置""" try: with open(file_path, "r") as f: @@ -51,9 +53,9 @@ def load_settings(self, file_path:str="./data/Config.json"): self.logger.write("设置文件读取成功", LT.INFO) except FileNotFoundError: self.logger.write("设置文件未找到,进行初始化", LT.INFO) - self.setup_settings() + self.setup_settings() - def save_settings(self, file_path:str="./data/Config.json"): + def save_settings(self, file_path: str = "./data/Config.json"): """保存设置""" settings = self.__dict__ with open(file_path, "w") as f: @@ -61,10 +63,10 @@ def save_settings(self, file_path:str="./data/Config.json"): self.logger.write("设置文件保存成功", LT.INFO) - def get_settings(self, setting: str): + def get_settings(self, setting: str) -> Any: """获取设置""" return getattr(self, setting, None) - + def set_settings(self, setting: str, value: Any) -> None: """设置设置""" setattr(self, setting, value) diff --git a/Plain_Craft_Launcher_2/build.sh b/Plain_Craft_Launcher_2/build.sh new file mode 100644 index 0000000..e9b7610 --- /dev/null +++ b/Plain_Craft_Launcher_2/build.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +python3 -m nuitka \ + --standalone \ + --onefile \ + --enable-plugin=pyqt5 \ + --include-package=PyQt5 \ + --include-package=PyQt5.QtSvg \ + --include-package=PyQt5.QtCore \ + --include-package=PyQt5.QtGui \ + --include-package=PyQt5.QtWidgets \ + --output-dir=../dist \ + --follow-imports \ + --remove-output \ + --assume-yes-for-downloads \ + --show-progress \ + --show-memory \ + --include-data-dir=./Images=Images \ + --include-module=_ctypes \ + --macos-create-app-bundle \ + ./Application.py \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index f491fac..38130c8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,10 +10,10 @@ ordered-set==4.1.0 pycparser==2.22 PyJWT==2.10.1 PyQt5==5.15.11 -PyQt5-Qt5==5.15.2 +PyQt5-Qt5==5.15.17 PyQt5-stubs==5.15.6.0 PyQt5_sip==12.17.0 -PyQt5Designer==5.14.1 +# PyQt5Designer==5.14.1 requests==2.32.3 urllib3==2.4.0 zstandard==0.23.0 From d025d6655ab8c890529bf0eced8ade76661d2946 Mon Sep 17 00:00:00 2001 From: AMagicPear Date: Tue, 27 May 2025 10:16:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20=E5=88=A0=E9=99=A4ModSetup?= =?UTF-8?q?=E6=B2=A1=E7=94=A8=E7=9A=84=E5=8D=95=E4=BE=8B=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E5=92=8C=E8=AE=BE=E7=BD=AE=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controls/RoundShadow.py | 4 +-- Plain_Craft_Launcher_2/FormMain_ui.py | 9 +++-- .../Modules/Base/ModSetup.py | 33 ++----------------- 3 files changed, 9 insertions(+), 37 deletions(-) diff --git a/Plain_Craft_Launcher_2/Controls/RoundShadow.py b/Plain_Craft_Launcher_2/Controls/RoundShadow.py index fde6aaa..85e765c 100644 --- a/Plain_Craft_Launcher_2/Controls/RoundShadow.py +++ b/Plain_Craft_Launcher_2/Controls/RoundShadow.py @@ -3,14 +3,14 @@ from PyQt5.QtCore import Qt, QRectF from PyQt5.QtGui import QPainter, QPainterPath, QBrush, QColor, QPaintEvent -from Modules.Base.ModSetup import ModSetup as Setup +from Modules.Base.ModSetup import mod_setup as setup class RoundShadow(QWidget): """圆角边框类""" def __init__(self): super().__init__() - self.border_width = Setup().get_settings('corner_radius') # 从设置中获取圆角值 + self.border_width = setup.corner_radius # 从设置中获取圆角值 # 设置 窗口无边框和背景透明 *必须 self.setAttribute(Qt.WA_TranslucentBackground) # 修改窗口标志,添加系统菜单和最小化按钮标志 diff --git a/Plain_Craft_Launcher_2/FormMain_ui.py b/Plain_Craft_Launcher_2/FormMain_ui.py index 9998b82..5fdec8e 100644 --- a/Plain_Craft_Launcher_2/FormMain_ui.py +++ b/Plain_Craft_Launcher_2/FormMain_ui.py @@ -9,19 +9,18 @@ from PyQt5.QtCore import Qt from Controls.MyRoundButton import MyRoundButton -from Modules.Base.ModSetup import ModSetup as Setup +from Modules.Base.ModSetup import mod_setup as setup class Ui_FormMain(object): def setupUi(self, FormMain: QtWidgets.QWidget): # 获取所有需要的设置项 - setup = Setup() size = setup.size - corner_radius = setup.get_settings("corner_radius") - bg_color = setup.get_settings("ColorBrush5") - fg_color = setup.get_settings("ColorBrush2") + corner_radius = setup.corner_radius + bg_color = setup.color_brush_5 + fg_color = setup.color_brush_2 FormMain.setObjectName("FormMain") FormMain.resize(*size) diff --git a/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py b/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py index c32c707..8da6bbd 100644 --- a/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py +++ b/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py @@ -7,20 +7,7 @@ class ModSetup: """写入/读取设置相关的类""" - _instance = None - - def __new__(cls): - """单例模式""" - if cls._instance is None: - cls._instance = super(ModSetup, cls).__new__(cls) - cls._instance._initialized = False - return cls._instance - def __init__(self): - if self._initialized: - return - self._initialized = True - self.logger = ModLogging(module_name="ModSetup") self.load_settings() self.logger.write("ModSetup 加载完成", LT.INFO) @@ -28,10 +15,10 @@ def __init__(self): def setup_settings(self): """初始化设置项""" self.ColorBrush1 = "#343d4a" - self.ColorBrush2 = "#0F6FCD" + self.color_brush_2 = "#0F6FCD" self.ColorBrush3 = "#1370f3" self.ColorBrush4 = "#4890f5" - self.ColorBrush5 = "#96c0f9" + self.color_brush_5 = "#96c0f9" self.ColorBrush6 = "#d5e6fd" self.ColorBrush7 = "#e0eafd" self.ColorBrush8 = "#eaf2fe" @@ -63,19 +50,5 @@ def save_settings(self, file_path: str = "./data/Config.json"): self.logger.write("设置文件保存成功", LT.INFO) - def get_settings(self, setting: str) -> Any: - """获取设置""" - return getattr(self, setting, None) - - def set_settings(self, setting: str, value: Any) -> None: - """设置设置""" - setattr(self, setting, value) - self.save_settings() - - def __getitem__(self, key: str) -> Any: - """重载 [] 运算符""" - return self.get_settings(key) - def __setitem__(self, key: str, value: Any) -> None: - """重载 [] 运算符""" - self.set_settings(key, value) +mod_setup = ModSetup() \ No newline at end of file From f12298d406feaac52eaa771ffbb26490e6fed475 Mon Sep 17 00:00:00 2001 From: AMagicPear Date: Tue, 27 May 2025 10:46:47 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=87=E9=A2=98?= =?UTF-8?q?=E6=A0=8F=E6=8E=A7=E4=BB=B6=E5=A4=A7=E5=B0=8F=E5=92=8C=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controls/RoundShadow.py | 2 +- Plain_Craft_Launcher_2/FormMain.py | 7 +++--- Plain_Craft_Launcher_2/FormMain_ui.py | 16 ++++++------- .../Modules/Base/ModSetup.py | 24 ++++++++++--------- .../{build.sh => build_mac.sh} | 0 5 files changed, 26 insertions(+), 23 deletions(-) rename Plain_Craft_Launcher_2/{build.sh => build_mac.sh} (100%) diff --git a/Plain_Craft_Launcher_2/Controls/RoundShadow.py b/Plain_Craft_Launcher_2/Controls/RoundShadow.py index 85e765c..9d3f162 100644 --- a/Plain_Craft_Launcher_2/Controls/RoundShadow.py +++ b/Plain_Craft_Launcher_2/Controls/RoundShadow.py @@ -10,7 +10,7 @@ class RoundShadow(QWidget): def __init__(self): super().__init__() - self.border_width = setup.corner_radius # 从设置中获取圆角值 + self.border_width = setup.CORNER_RADIUS # 从设置中获取圆角值 # 设置 窗口无边框和背景透明 *必须 self.setAttribute(Qt.WA_TranslucentBackground) # 修改窗口标志,添加系统菜单和最小化按钮标志 diff --git a/Plain_Craft_Launcher_2/FormMain.py b/Plain_Craft_Launcher_2/FormMain.py index 41e6511..3a98387 100644 --- a/Plain_Craft_Launcher_2/FormMain.py +++ b/Plain_Craft_Launcher_2/FormMain.py @@ -12,6 +12,7 @@ from FormMain_ui import Ui_FormMain from Controls.RoundShadow import RoundShadow +from Modules.Base.ModSetup import mod_setup class FormMain(RoundShadow): @@ -32,7 +33,7 @@ def __init__(self): # 窗口加载第一步:基础 # 设置窗口大小 - self.resize(850, 500) + self.resize(*mod_setup.SIZE) self.logger.write("窗口加载第一步完成", LT.INFO) # 窗口加载第二步:加载 UI 控件 @@ -94,9 +95,9 @@ def resizeEvent(self, a0: QResizeEvent): self.container.setGeometry(9, 9, self.width() - 18, self.height() - 18) # 更新面板大小 - self.ui.PanTitle.setGeometry(0, 0, self.container.width(), 40) + self.ui.PanTitle.setGeometry(0, 0, self.container.width(), mod_setup.TITLE_BAR_H) self.ui.PanMain.setGeometry( - 0, 40, self.container.width(), self.container.height() - 40 + 0, mod_setup.TITLE_BAR_H, self.container.width(), self.container.height() - mod_setup.TITLE_BAR_H ) def close_window(self): diff --git a/Plain_Craft_Launcher_2/FormMain_ui.py b/Plain_Craft_Launcher_2/FormMain_ui.py index 5fdec8e..afe12ee 100644 --- a/Plain_Craft_Launcher_2/FormMain_ui.py +++ b/Plain_Craft_Launcher_2/FormMain_ui.py @@ -16,9 +16,9 @@ class Ui_FormMain(object): def setupUi(self, FormMain: QtWidgets.QWidget): # 获取所有需要的设置项 - size = setup.size + size = setup.SIZE - corner_radius = setup.corner_radius + corner_radius = setup.CORNER_RADIUS bg_color = setup.color_brush_5 fg_color = setup.color_brush_2 @@ -34,8 +34,8 @@ def setupUi(self, FormMain: QtWidgets.QWidget): # 标题栏 Panel self.PanTitle = QtWidgets.QFrame(FormMain) - self.PanTitle.setGeometry(QtCore.QRect(0, 0, size[0], 48)) - self.PanTitle.setBaseSize(QtCore.QSize(size[0], 48)) + self.PanTitle.setGeometry(QtCore.QRect(0, 0, size[0], setup.TITLE_BAR_H)) + self.PanTitle.setBaseSize(QtCore.QSize(size[0], setup.TITLE_BAR_H)) self.PanTitle.setStyleSheet( f""" QFrame#PanTitle {{ @@ -52,7 +52,7 @@ def setupUi(self, FormMain: QtWidgets.QWidget): # 主 Panel self.PanMain = QtWidgets.QFrame(FormMain) - self.PanMain.setGeometry(QtCore.QRect(0, 48, size[0], (size[1] - 48))) + self.PanMain.setGeometry(QtCore.QRect(0, setup.TITLE_BAR_H, size[0], (size[1] - 48))) self.PanMain.setStyleSheet( f""" QFrame#PanMain {{ @@ -75,12 +75,12 @@ def setupUi(self, FormMain: QtWidgets.QWidget): tooltip="Exit", padding=(7, 7, -10, -10), ) - self.BtnExit.setGeometry(QtCore.QRect((size[0] - 50), 12, 13, 13)) + self.BtnExit.setGeometry(QtCore.QRect((size[0] - 50), 15, 14, 14)) self.BtnExit.setObjectName("BtnExit") # 标题栏按钮 -- 最小化 self.BtnMin = QtWidgets.QPushButton(self.PanTitle) - self.BtnMin.setGeometry(QtCore.QRect((size[0] - 100), 0, 40, 40)) + self.BtnMin.setGeometry(QtCore.QRect((size[0] - 98), 2, 40, 40)) self.BtnMin.setStyleSheet("background-color: transparent;") self.BtnMin.setText("—") self.BtnMin.setObjectName("BtnMin") @@ -88,7 +88,7 @@ def setupUi(self, FormMain: QtWidgets.QWidget): # 标题栏标签 -- 标题 self.SVGTitle = QSvgWidget(self.PanTitle) self.SVGTitle.load("Images/svgtitle.svg") - self.SVGTitle.setGeometry(QtCore.QRect(0, 4, 120, 40)) + self.SVGTitle.setGeometry(QtCore.QRect(2, 14, 76, 24)) self.SVGTitle.setStyleSheet("background-color: transparent;") self.SVGTitle.setObjectName("SVGTitle") diff --git a/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py b/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py index 8da6bbd..15d731e 100644 --- a/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py +++ b/Plain_Craft_Launcher_2/Modules/Base/ModSetup.py @@ -6,6 +6,10 @@ class ModSetup: """写入/读取设置相关的类""" + # 常量(不随主题变化) + CORNER_RADIUS = 8 + SIZE: tuple[int, int] = (850, 500) + TITLE_BAR_H: int = 48 def __init__(self): self.logger = ModLogging(module_name="ModSetup") @@ -14,18 +18,16 @@ def __init__(self): def setup_settings(self): """初始化设置项""" - self.ColorBrush1 = "#343d4a" + self.color_brush_1 = "#343d4a" self.color_brush_2 = "#0F6FCD" - self.ColorBrush3 = "#1370f3" - self.ColorBrush4 = "#4890f5" + self.color_brush_3 = "#1370f3" + self.color_brush_4 = "#4890f5" self.color_brush_5 = "#96c0f9" - self.ColorBrush6 = "#d5e6fd" - self.ColorBrush7 = "#e0eafd" - self.ColorBrush8 = "#eaf2fe" - self.ColorBrushBg0 = "#96c0f9" - self.ColorBrushBg1 = "#bee0eafd" - self.corner_radius = 8 - self.size = (850, 500) + self.color_brush_6 = "#d5e6fd" + self.color_brush_7 = "#e0eafd" + self.color_brush_8 = "#eaf2fe" + self.color_brush_bg_0 = "#96c0f9" + self.color_brush_bg_1 = "#bee0eafd" self.logger.write("设置初始化完成", LT.INFO) @@ -51,4 +53,4 @@ def save_settings(self, file_path: str = "./data/Config.json"): self.logger.write("设置文件保存成功", LT.INFO) -mod_setup = ModSetup() \ No newline at end of file +mod_setup = ModSetup() diff --git a/Plain_Craft_Launcher_2/build.sh b/Plain_Craft_Launcher_2/build_mac.sh similarity index 100% rename from Plain_Craft_Launcher_2/build.sh rename to Plain_Craft_Launcher_2/build_mac.sh