使用 ProgressInfoBar 替代原有方案

This commit is contained in:
2025-05-26 19:42:20 +08:00
parent e3fde36390
commit 50a360aca2
5 changed files with 66 additions and 95 deletions

View File

@@ -1,12 +1,13 @@
from typing import Literal, Callable
from functools import wraps
from typing import Literal, Callable
from PySide6.QtCore import Qt, Signal, QThread
from PySide6.QtWidgets import QHBoxLayout, QVBoxLayout, QFileDialog
from qfluentwidgets import GroupHeaderCardWidget, PushButton, IconWidget, InfoBarIcon, \
BodyLabel, PrimaryPushButton, FluentIcon, LineEdit, InfoBar, InfoBarPosition, ProgressBar, IndeterminateProgressBar
BodyLabel, PrimaryPushButton, FluentIcon, LineEdit
from module.worker import DTGWorker
from ui.components.infobar import ProgressInfoBar
from ui.components.widget import Widget
@@ -121,8 +122,8 @@ class DefenseWidget(Widget):
self.vbox.addWidget(self.exportCard)
self.vbox.addStretch(1)
self.infoBar = None
self.pb = None
self.pib = ProgressInfoBar(parent=self, isClosable=False, duration=-1)
self.pib.hide()
self.thread = None
self.worker = None
@@ -142,40 +143,16 @@ class DefenseWidget(Widget):
self.exportCard.startSignal.connect(self.start_generate)
def show_info_bar(self):
self.infoBar = InfoBar(
icon=InfoBarIcon.INFORMATION,
title='请稍后',
content="",
orient=Qt.Horizontal,
isClosable=False,
position=InfoBarPosition.BOTTOM,
duration=-1,
parent=self
)
self.pb = ProgressBar(self.infoBar)
self.infoBar.addWidget(self.pb)
self.infoBar.show()
self.pib.show()
self.pib.set_title('请稍后')
def set_pb_value(self, value: int) -> None:
if self.pb:
self.pb.setValue(value)
if value == 100:
self.infoBar.close()
self.infoBar = InfoBar(
icon=InfoBarIcon.INFORMATION,
title='正在转换文件',
content="",
orient=Qt.Horizontal,
isClosable=False,
position=InfoBarPosition.BOTTOM,
duration=-1,
parent=self
)
self.infoBar.addWidget(IndeterminateProgressBar(start=True))
self.infoBar.show()
self.pb = None
elif value == -1:
self.successFlag = False
self.pib.set_progress(value)
if value == 100:
self.pib.set_progress(101)
self.pib.set_title('正在转换文件')
elif value == -1:
self.successFlag = False
def enable_start_check(func: Callable):
@wraps(func)
@@ -254,27 +231,10 @@ class DefenseWidget(Widget):
def after_generate(self):
self.exportCard.startButton.setEnabled(True)
self.infoBar.close()
if self.successFlag:
self.infoBar = InfoBar.success(
title='成功!',
content="正在打开文件...",
orient=Qt.Horizontal,
isClosable=True,
position=InfoBarPosition.BOTTOM,
duration=5000,
parent=self
)
self.pib.show_success(content="正在打开文件...")
else:
self.infoBar = InfoBar.error(
title='失败!',
content="",
orient=Qt.Horizontal,
isClosable=True,
position=InfoBarPosition.BOTTOM,
duration=5000,
parent=self
)
self.pib.show_error()
def show_error(self, title: str, content: str):
self.errorSignal.emit(title, content)