Skip to content
This repository was archived by the owner on Jun 28, 2025. It is now read-only.

Commit db6319e

Browse files
committed
revert: 受不了了
1 parent 037b940 commit db6319e

8 files changed

Lines changed: 156 additions & 76 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ Plain_Craft_Launcher_2/data/*.log
1616
**/.minecraft/
1717
**/dist/*
1818
nuitka-crash-report.xml
19-
icon/
19+
icon/

Plain_Craft_Launcher_2/Application.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# -*- coding: utf-8 -*-
2-
from PyQt5.QtWidgets import QApplication
2+
from PyQt5.QtWidgets import *
33
import sys
44

55
from FormMain import FormMain

Plain_Craft_Launcher_2/Controls/RoundShadow.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
from PyQt5.QtCore import Qt, QRectF
44
from PyQt5.QtGui import QPainter, QPainterPath, QBrush, QColor, QPaintEvent
55

6-
from Modules.Base.ModSetup import mod_setup as setup
6+
from Modules.Base.ModSetup import ModSetup as Setup
77

88
class RoundShadow(QWidget):
99
"""圆角边框类"""
1010

1111
def __init__(self):
1212
super().__init__()
13-
self.border_width = setup.CORNER_RADIUS # 从设置中获取圆角值
13+
self.border_width = Setup().get_settings('corner_radius') # 从设置中获取圆角值
1414
# 设置 窗口无边框和背景透明 *必须
1515
self.setAttribute(Qt.WA_TranslucentBackground)
1616
# 修改窗口标志,添加系统菜单和最小化按钮标志

Plain_Craft_Launcher_2/FormMain.py

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import sys
33
import os
44
from PyQt5.QtWidgets import QApplication, QWidget
5-
from PyQt5.QtGui import QResizeEvent, QMouseEvent
5+
from PyQt5.QtGui import QResizeEvent
66
from PyQt5.QtCore import Qt, QPropertyAnimation, QEasingCurve, QRect
77

88
from Modules.Base.ModLogging import ModLogging, LoggingType as LT
@@ -21,44 +21,40 @@ def __init__(self):
2121
super().__init__()
2222
# 初始化日志
2323
self.logger = ModLogging(module_name="FormMain")
24-
24+
2525
# 设置窗口标志,确保最小化时显示在任务栏
26-
self.setWindowFlags(
27-
Qt.FramelessWindowHint
28-
| Qt.Window
29-
| Qt.WindowSystemMenuHint
30-
| Qt.WindowMinimizeButtonHint
31-
)
32-
26+
self.setWindowFlags(Qt.FramelessWindowHint | Qt.Window | Qt.WindowSystemMenuHint | Qt.WindowMinimizeButtonHint)
27+
3328
# 窗口加载第一步:基础
3429
# 设置窗口大小
35-
self.resize(*mod_setup.SIZE)
30+
self.resize(900, 550)
3631
self.logger.write("窗口加载第一步完成", LT.INFO)
37-
32+
3833
# 窗口加载第二步:加载 UI 控件
3934
# 创建一个容器widget
4035
self.container = QWidget(self)
4136
self.container.setGeometry(9, 9, self.width() - 18, self.height() - 18)
42-
37+
4338
# 设置UI
4439
self.ui = Ui_FormMain()
4540
self.ui.setupUi(self.container)
41+
4642

4743
self.logger.write("窗口加载第二步完成", LT.INFO)
4844

4945
# 窗口加载第三步:链接信号/槽(真的不用设置无边框)
5046
# 连接按钮事件
5147
self.ui.BtnExit.clicked.connect(self.close_window)
5248
self.ui.BtnMin.clicked.connect(self.minimize_window)
53-
49+
5450
# 记录窗口是否最大化
5551
self.is_maximized = False
5652
# 记录窗口正常状态下的位置和大小
5753
self.normal_geometry = self.geometry()
58-
54+
5955
# 初始化拖动相关变量
6056
self._drag_start_pos = None
61-
57+
6258
# 设置标题栏鼠标追踪
6359
self.ui.PanTitle.setMouseTracking(True)
6460
self.ui.PanTitle.mousePressEvent = self.PanTitle_mousePressEvent
@@ -69,23 +65,23 @@ def __init__(self):
6965

7066
self.logger.write("FormMain 加载完成", LT.INFO)
7167

72-
def PanTitle_mousePressEvent(self, a0: QMouseEvent):
68+
def PanTitle_mousePressEvent(self, event):
7369
"""处理标题栏鼠标按下事件"""
74-
if a0.button() == Qt.LeftButton:
75-
self._drag_start_pos = a0.globalPos() - self.pos()
76-
a0.accept()
70+
if event.button() == Qt.LeftButton:
71+
self._drag_start_pos = event.globalPos() - self.pos()
72+
event.accept()
7773

78-
def PanTitle_mouseMoveEvent(self, a0: QMouseEvent):
74+
def PanTitle_mouseMoveEvent(self, event):
7975
"""处理标题栏鼠标移动事件"""
8076
if self._drag_start_pos is not None:
81-
self.move(a0.globalPos() - self._drag_start_pos)
82-
a0.accept()
77+
self.move(event.globalPos() - self._drag_start_pos)
78+
event.accept()
8379

84-
def PanTitle_mouseReleaseEvent(self, a0: QMouseEvent):
80+
def PanTitle_mouseReleaseEvent(self, event):
8581
"""处理标题栏鼠标释放事件"""
86-
if a0.button() == Qt.LeftButton:
82+
if event.button() == Qt.LeftButton:
8783
self._drag_start_pos = None
88-
a0.accept()
84+
event.accept()
8985

9086
def resizeEvent(self, a0: QResizeEvent):
9187
"""处理窗口大小变化"""
@@ -120,21 +116,23 @@ def minimize_window(self):
120116
"""跨平台最小化窗口"""
121117
self.logger.write("按下按钮:BtnMin,正在尝试最小化窗口", LT.INFO)
122118
self.showMinimized()
123-
119+
124120
def toggle_maximize_window(self):
125121
"""切换窗口最大化/还原状态"""
126122
if self.isMaximized():
127123
self.restore_window()
128124
else:
129125
self.maximize_window()
130-
126+
131127
def maximize_window(self):
132128
"""跨平台最大化窗口"""
133129
self.logger.write("按下按钮:BtnMax,正在尝试最大化窗口", LT.INFO)
134130
# 保存当前窗口位置和大小(如果需要)
135131
self.showMaximized()
136-
132+
137133
def restore_window(self):
138134
"""跨平台还原窗口"""
139135
self.logger.write("按下按钮:BtnMax,正在尝试还原窗口", LT.INFO)
140136
self.showNormal()
137+
138+

Plain_Craft_Launcher_2/FormMain.ui

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>FormMain</class>
4+
<widget class="QWidget" name="FormMain">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>900</width>
10+
<height>550</height>
11+
</rect>
12+
</property>
13+
<property name="baseSize">
14+
<size>
15+
<width>900</width>
16+
<height>550</height>
17+
</size>
18+
</property>
19+
<property name="windowTitle">
20+
<string>Plain Craft Launcher 2</string>
21+
</property>
22+
<property name="windowIcon">
23+
<iconset resource="Images/img_rc.qrc">
24+
<normaloff>:/.ico/icon.ico</normaloff>:/.ico/icon.ico</iconset>
25+
</property>
26+
<widget class="QFrame" name="frame">
27+
<property name="geometry">
28+
<rect>
29+
<x>0</x>
30+
<y>0</y>
31+
<width>900</width>
32+
<height>40</height>
33+
</rect>
34+
</property>
35+
<property name="baseSize">
36+
<size>
37+
<width>900</width>
38+
<height>40</height>
39+
</size>
40+
</property>
41+
<property name="styleSheet">
42+
<string notr="true">background-color: blue;</string>
43+
</property>
44+
<property name="frameShape">
45+
<enum>QFrame::StyledPanel</enum>
46+
</property>
47+
<property name="frameShadow">
48+
<enum>QFrame::Raised</enum>
49+
</property>
50+
</widget>
51+
<widget class="QFrame" name="frame_2">
52+
<property name="geometry">
53+
<rect>
54+
<x>0</x>
55+
<y>40</y>
56+
<width>901</width>
57+
<height>511</height>
58+
</rect>
59+
</property>
60+
<property name="styleSheet">
61+
<string notr="true">background-color: skyblue;</string>
62+
</property>
63+
<property name="frameShape">
64+
<enum>QFrame::StyledPanel</enum>
65+
</property>
66+
<property name="frameShadow">
67+
<enum>QFrame::Raised</enum>
68+
</property>
69+
</widget>
70+
</widget>
71+
<resources>
72+
<include location="Images/img_rc.qrc"/>
73+
</resources>
74+
<connections/>
75+
</ui>

Plain_Craft_Launcher_2/FormMain_ui.py

Lines changed: 19 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,22 @@
1313
from Pages.PageLaunch.PageLaunch import PageLaunch
1414

1515
class Ui_FormMain(object):
16-
1716
def setupUi(self, FormMain: QtWidgets.QWidget):
1817
# 获取所有需要的设置项
19-
size = setup.SIZE
20-
21-
corner_radius = setup.CORNER_RADIUS
22-
bg_color = setup.color_brush_5
23-
fg_color = setup.color_brush_2
24-
18+
setup = Setup()
19+
size = setup.get_settings('size')
20+
corner_radius = setup.get_settings('corner_radius')
21+
bg_color = setup.get_settings('ColorBrush5')
22+
fg_color = setup.get_settings('ColorBrush2')
23+
2524
FormMain.setObjectName("FormMain")
2625
FormMain.resize(*size)
2726
FormMain.setBaseSize(QtCore.QSize(*size))
2827
FormMain.setStyleSheet(f"background-color: transparent; ")
2928
icon = QtGui.QIcon()
30-
icon.addPixmap(
31-
QtGui.QPixmap(":/.ico/icon.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off
32-
)
29+
icon.addPixmap(QtGui.QPixmap(":/.ico/icon.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
3330
FormMain.setWindowIcon(icon)
34-
31+
3532
# 标题栏 Panel
3633
self.PanTitle = QtWidgets.QFrame(FormMain)
3734
title_height = 48
@@ -45,10 +42,9 @@ def setupUi(self, FormMain: QtWidgets.QWidget):
4542
border-top-right-radius: {corner_radius}px;
4643
border-bottom: none;
4744
}}
48-
"""
49-
)
50-
self.PanTitle.setFrameShape(QtWidgets.QFrame.NoFrame)
51-
self.PanTitle.setFrameShadow(QtWidgets.QFrame.Plain)
45+
""")
46+
self.PanTitle.setFrameShape(QtWidgets.QFrame.NoFrame)
47+
self.PanTitle.setFrameShadow(QtWidgets.QFrame.Plain)
5248
self.PanTitle.setObjectName("PanTitle")
5349

5450
# 主 Panel
@@ -61,34 +57,25 @@ def setupUi(self, FormMain: QtWidgets.QWidget):
6157
border-bottom-left-radius: {corner_radius}px;
6258
border-bottom-right-radius: {corner_radius}px;
6359
}}
64-
"""
65-
)
66-
self.PanMain.setFrameShape(QtWidgets.QFrame.NoFrame)
67-
self.PanMain.setFrameShadow(QtWidgets.QFrame.Plain)
60+
""")
61+
self.PanMain.setFrameShape(QtWidgets.QFrame.NoFrame)
62+
self.PanMain.setFrameShadow(QtWidgets.QFrame.Plain)
6863
self.PanMain.setObjectName("PanMain")
6964

7065
# 标题栏按钮 -- 退出
71-
self.BtnExit = MyRoundButton(
72-
self.PanTitle,
73-
svg_path="Images/BtnTitleClose.svg",
74-
size=(14, 14),
75-
tooltip="Exit",
76-
padding=(7, 7, -10, -10),
77-
)
78-
self.BtnExit.setGeometry(QtCore.QRect((size[0] - 50), 15, 14, 14))
66+
self.BtnExit = MyRoundButton(self.PanTitle, svg_path="Images/BtnTitleExit.svg", size=(36, 36), tooltip="Exit")
67+
self.BtnExit.setGeometry(QtCore.QRect((size[0] - 72), 8, 36, 36))
7968
self.BtnExit.setObjectName("BtnExit")
8069

8170
# 标题栏按钮 -- 最小化
82-
self.BtnMin = QtWidgets.QPushButton(self.PanTitle)
83-
self.BtnMin.setGeometry(QtCore.QRect((size[0] - 98), 2, 40, 40))
84-
self.BtnMin.setStyleSheet("background-color: transparent;")
85-
self.BtnMin.setText("—")
71+
self.BtnMin = MyRoundButton(self.PanTitle, svg_path="Images/BtnTitleMin.svg", size=(36, 36), tooltip="Minisize")
72+
self.BtnMin.setGeometry(QtCore.QRect((size[0] - 120), 8, 36, 36))
8673
self.BtnMin.setObjectName("BtnMin")
8774

8875
# 标题栏标签 -- 标题
8976
self.SVGTitle = QSvgWidget(self.PanTitle)
9077
self.SVGTitle.load("Images/svgtitle.svg")
91-
self.SVGTitle.setGeometry(QtCore.QRect(2, 14, 76, 24))
78+
self.SVGTitle.setGeometry(QtCore.QRect(8, 8, 120, 40)) # 缩小尺寸
9279
self.SVGTitle.setStyleSheet("background-color: transparent;")
9380
self.SVGTitle.setObjectName("SVGTitle")
9481

@@ -104,5 +91,4 @@ def retranslateUi(self, FormMain: QtWidgets.QWidget):
10491
_translate = QtCore.QCoreApplication.translate
10592
FormMain.setWindowTitle(_translate("FormMain", "Plain Craft Launcher 2"))
10693

107-
10894
from Resources import *

Plain_Craft_Launcher_2/Modules/Base/ModSetup.py

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,22 @@
33
from typing import Any
44
from .ModLogging import ModLogging, LoggingType as LT
55

6-
76
class ModSetup:
87
"""写入/读取设置相关的类"""
9-
# 常量(不随主题变化)
10-
CORNER_RADIUS = 8
11-
SIZE: tuple[int, int] = (850, 500)
12-
TITLE_BAR_H: int = 48
13-
8+
_instance = None
9+
10+
def __new__(cls):
11+
"""单例模式"""
12+
if cls._instance is None:
13+
cls._instance = super(ModSetup, cls).__new__(cls)
14+
cls._instance._initialized = False
15+
return cls._instance
16+
1417
def __init__(self):
18+
if self._initialized:
19+
return
20+
self._initialized = True
21+
1522
self.logger = ModLogging(module_name="ModSetup")
1623
self.load_settings()
1724
self.logger.write("ModSetup 加载完成", LT.INFO)
@@ -35,7 +42,7 @@ def setup_settings(self):
3542

3643
self.logger.write("设置初始化完成", LT.INFO)
3744

38-
def load_settings(self, file_path: str = "./data/Config.json"):
45+
def load_settings(self, file_path:str="./data/Config.json"):
3946
"""读取已经存储的设置"""
4047
try:
4148
with open(file_path, "r") as f:
@@ -46,15 +53,29 @@ def load_settings(self, file_path: str = "./data/Config.json"):
4653
self.logger.write("设置文件读取成功", LT.INFO)
4754
except FileNotFoundError:
4855
self.logger.write("设置文件未找到,进行初始化", LT.INFO)
49-
self.setup_settings()
56+
self.setup_settings()
5057

51-
def save_settings(self, file_path: str = "./data/Config.json"):
58+
def save_settings(self, file_path:str="./data/Config.json"):
5259
"""保存设置"""
5360
settings = self.__dict__
5461
with open(file_path, "w") as f:
5562
json.dump(settings, f)
5663

5764
self.logger.write("设置文件保存成功", LT.INFO)
5865

66+
def get_settings(self, setting: str):
67+
"""获取设置"""
68+
return getattr(self, setting, None)
69+
70+
def set_settings(self, setting: str, value: Any) -> None:
71+
"""设置设置"""
72+
setattr(self, setting, value)
73+
self.save_settings()
74+
75+
def __getitem__(self, key: str) -> Any:
76+
"""重载 [] 运算符"""
77+
return self.get_settings(key)
5978

60-
mod_setup = ModSetup()
79+
def __setitem__(self, key: str, value: Any) -> None:
80+
"""重载 [] 运算符"""
81+
self.set_settings(key, value)

0 commit comments

Comments
 (0)