from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout from PyQt5.QtCore import Qt from qfluentwidgets import FluentIcon as FIF from qfluentwidgets import CommandBar, Action, InfoBar, InfoBarPosition, SubtitleLabel from .json_edit import CodeEditor import app.env as env import os class SettingWidget(QWidget): def __init__(self): super().__init__() self.base = QVBoxLayout(self) # 创建水平布局来放置工具栏 bar_layout = QHBoxLayout() title = SubtitleLabel("设置") bar_layout.addWidget(title, alignment=Qt.AlignmentFlag.AlignLeft) # 设置工具栏右对齐 bar = CommandBar() bar.addAction(Action(FIF.SAVE, "保存", triggered=self.save)) bar.addAction(Action(FIF.SYNC, "重新加载", triggered=self.reload)) bar_layout.addWidget(bar, alignment=Qt.AlignmentFlag.AlignRight) # 设置工具栏右对齐 # 将水平布局添加到垂直布局中 self.base.addLayout(bar_layout) # 加载 JSON 配置 with open(os.path.join(env.dirs.user_config_path, "config.json"), "r") as config_file: config_data = config_file.read() self.c1 = CodeEditor(config_data) # 将代码编辑器添加到垂直布局中 self.base.addWidget(self.c1) self.setLayout(self.base) # 设置布局 def save(self): # 保存配置到 JSON 文件 with open("config.json", "w") as config_file: config_file.write(self.c1.toPlainText()) InfoBar.success( title='成功', content="配置文件保存成功", orient=Qt.Horizontal, isClosable=True, position=InfoBarPosition.TOP, duration=2000, parent=self ) def reload(self): # 重新加载 JSON 配置 with open("config.json", "r") as config_file: config_data = config_file.read() self.c1.setPlainText(config_data) InfoBar.success( title='成功', content="配置文件加载成功", orient=Qt.Horizontal, isClosable=True, position=InfoBarPosition.TOP, duration=2000, parent=self )