Skip to content

Commit fef478b

Browse files
committed
feat&ci:调整工作流,添加日志功能,设置界面添加滚动条,完成v2.0.0 Release
1 parent 89deea0 commit fef478b

File tree

5 files changed

+78
-25
lines changed

5 files changed

+78
-25
lines changed

.github/workflows/build.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
with:
3333
nuitka-version: main
3434
script-name: main.py
35-
mode: standalone
35+
mode: app
3636
enable-plugins: pyqt5
3737
include-data-files: LICENSE=LICENSE
3838
include-data-dir: assets=assets
@@ -44,7 +44,7 @@ jobs:
4444
with:
4545
name: NamePicker-Action-${{ runner.os }}
4646
path: |
47-
${{ github.workspace }}/build/main.dist
47+
${{ github.workspace }}/build/main.exe
4848
include-hidden-files: true
4949

5050
build_linux:
@@ -72,7 +72,7 @@ jobs:
7272
with:
7373
nuitka-version: main
7474
script-name: main.py
75-
mode: standalone
75+
mode: app
7676
enable-plugins: pyqt5
7777
include-data-files: LICENSE=LICENSE
7878
include-data-dir: assets=assets
@@ -84,5 +84,5 @@ jobs:
8484
with:
8585
name: NamePicker-Action-${{ runner.os }}
8686
path: |
87-
${{ github.workspace }}/build/main.dist
87+
${{ github.workspace }}/build/main.bin
8888
include-hidden-files: true

.idea/workspace.xml

+14-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
"supportCS": false
55
},
66
"Huanyu": {
7-
"ecoMode": false
7+
"ecoMode": true
8+
},
9+
"Debug": {
10+
"logLevel": "DEBUG"
811
},
912
"QFluentWidgets": {
1013
"ThemeColor": "#ff009faa",

main.py

+56-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1+
import os
12
import sys
23
import pandas as pd
34
import tempfile
45
import random
6+
import traceback
7+
from loguru import logger
58
from PyQt5.QtCore import *
69
from PyQt5.QtWidgets import *
710
from PyQt5.QtGui import QIcon,QPainter,QPixmap
811
from qfluentwidgets import *
912

1013
temp_dir = tempfile.gettempdir()
11-
VERSION = "2.0.0dev"
14+
VERSION = "v2.0.0rel"
1215
CODENAME = "Tribbie"
1316

1417
QApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
@@ -19,10 +22,24 @@ class Config(QConfig):
1922
allowRepeat = ConfigItem("General","allowRepeat",False,BoolValidator())
2023
supportCS = ConfigItem("General", "supportCS", False, BoolValidator())
2124
eco = ConfigItem("Huanyu", "ecoMode", False, BoolValidator())
25+
logLevel = OptionsConfigItem("Debug", "logLevel", "INFO", OptionsValidator(["DEBUG", "INFO", "WARNING","ERROR"]), restart=True)
2226

2327
cfg = Config()
2428
qconfig.load('config.json', cfg)
2529

30+
if os.path.exists("out.log"):
31+
os.remove("out.log")
32+
logger.remove(0)
33+
logger.add("out.log")
34+
logger.add(sys.stderr, level=cfg.get(cfg.logLevel))
35+
36+
logger.info("⌈缇宝,明天见⌋")
37+
38+
def hookExceptions(exc_type, exc_value, exc_tb):
39+
error_details = ''.join(traceback.format_exception(exc_type, exc_value, exc_tb))
40+
logger.error(error_details)
41+
sys.excepthook = hookExceptions
42+
2643
class Choose(QFrame):
2744

2845
def __init__(self, text: str, parent=None):
@@ -87,6 +104,7 @@ def __init__(self, text: str, parent=None):
87104
self.hBoxLayout.addWidget(self.table,2)
88105
self.hBoxLayout.addWidget(self.opt,3,Qt.AlignCenter)
89106
self.setObjectName(text.replace(' ', 'Choose'))
107+
logger.info("主界面初始化完成")
90108

91109
if cfg.get(cfg.eco):
92110
InfoBar.success(
@@ -98,6 +116,7 @@ def __init__(self, text: str, parent=None):
98116
duration=3000,
99117
parent=self
100118
)
119+
logger.info("NamePicker低碳模式将大幅降低碳排放,同时大幅增加设备寿命")
101120

102121
def pick(self):
103122
global cfg
@@ -132,11 +151,13 @@ def pick(self):
132151
while chs in self.chosen:
133152
chs = random.randint(0, le - 1)
134153
self.chosen.append(chs)
154+
logger.debug(self.chosen)
135155
return [tar[chs], self.names[2][self.names[0].index(tar[chs])]]
136156
else:
137157
return ["尚未抽选", "尚未抽选"]
138158

139159
def pickcb(self):
160+
logger.debug("pickcb被调用")
140161
self.table.setRowCount(self.pickNum.value())
141162
namet = []
142163
namel = []
@@ -149,10 +170,12 @@ def pickcb(self):
149170
for i in namet:
150171
namel.append("%s(%s)" % (i[0], i[1]))
151172
f.writelines(namel)
173+
logger.info("文件存储完成")
152174
else:
153175
for i, t in enumerate(namet):
154176
for j in range(2):
155177
self.table.setItem(i, j, QTableWidgetItem(t[j]))
178+
logger.debug("表格设置完成")
156179

157180

158181
def loadname(self):
@@ -181,7 +204,9 @@ def loadname(self):
181204
self.numl[1].append(i)
182205
self.numlen[0] = len(self.numl[0])
183206
self.numlen[1] = len(self.numl[1])
207+
logger.info("名单加载完成")
184208
except FileNotFoundError:
209+
logger.warning("没有找到名单文件")
185210
with open("names.csv","w",encoding="utf-8") as f:
186211
st = ["name,sex,no\n","example,0,1"]
187212
f.writelines(st)
@@ -193,6 +218,9 @@ def __init__(self, text: str, parent=None):
193218
super().__init__(parent=parent)
194219
self.setObjectName(text.replace(' ', 'Settings'))
195220
self.df = QVBoxLayout(self)
221+
self.scrollArea = ScrollArea()
222+
self.scrollArea.setWidgetResizable(True)
223+
self.scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
196224
self.optv =QWidget()
197225
self.opts = QVBoxLayout(self.optv)
198226
self.sets = [SubtitleLabel("常规"),
@@ -207,7 +235,15 @@ def __init__(self, text: str, parent=None):
207235
icon=FluentIcon.LINK,
208236
title="课表软件联动",
209237
content="启用后将在ClassIsland/Class Widgets上(而非主界面)显示抽选结果,需要安装对应插件"
210-
),
238+
),SubtitleLabel("调试"),
239+
ComboBoxSettingCard(
240+
configItem=cfg.logLevel,
241+
icon=FluentIcon.DEVELOPER_TOOLS,
242+
title="日志记录级别",
243+
content="日志的详细程度",
244+
texts=["DEBUG", "INFO", "WARNING","ERROR"]
245+
),PushButton(FluentIcon.DOCUMENT,"测试日志输出"),
246+
PushButton(FluentIcon.CLOSE,"测试引发崩溃"),
211247
SubtitleLabel("欢愉(太有乐子了)"),
212248
SwitchSettingCard(
213249
configItem=cfg.eco,
@@ -216,15 +252,25 @@ def __init__(self, text: str, parent=None):
216252
content="NamePicker致力于减少碳排放"
217253
)]
218254
for i in self.sets:
219-
self.opts.addWidget(i,1)
220-
221-
self.scrollArea = SingleDirectionScrollArea(orient=Qt.Vertical)
222-
self.scrollArea.setWidget(self.optv)
255+
self.opts.addWidget(i)
256+
self.sets[5].clicked.connect(self.testLog)
257+
self.sets[6].clicked.connect(self.testCrash)
223258
self.scrollArea.setStyleSheet("QScrollArea{background: transparent; border: none}")
259+
self.scrollArea.setWidget(self.optv)
224260
self.optv.setStyleSheet("QWidget{background: transparent}")
225-
226261
self.df.addWidget(TitleLabel("设置"))
227-
self.df.addWidget(self.optv)
262+
self.df.addWidget(self.scrollArea)
263+
264+
logger.info("设置界面初始化完成")
265+
266+
def testLog(self):
267+
logger.debug("这是Debug日志")
268+
logger.info("这是Info日志")
269+
logger.warning("这是Warning日志")
270+
logger.error("这是Error日志")
271+
272+
def testCrash(self):
273+
raise Exception("NamePicker实际上没有任何问题,是你自己手贱引发的崩溃")
228274

229275
class About(QFrame):
230276
def __init__(self, text: str, parent=None):
@@ -245,6 +291,7 @@ def __init__(self, text: str, parent=None):
245291
self.df.addWidget(self.author)
246292
self.df.addWidget(self.cpleft)
247293
self.df.addWidget(self.ghrepo)
294+
logger.info("关于界面初始化")
248295

249296
class App(FluentWindow):
250297
def __init__(self):
@@ -256,6 +303,7 @@ def __init__(self):
256303
self.About = About("关于", self)
257304
self.initNavigation()
258305
self.initWindow()
306+
logger.info("主界面初始化")
259307

260308
def initNavigation(self):
261309
self.addSubInterface(self.Choose, FluentIcon.HOME, "随机抽选")

requirements.txt

50 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)