完成0.01版本

This commit is contained in:
2026-04-05 22:43:43 +08:00
parent 104dfe9693
commit 77f718cca6
10 changed files with 268 additions and 110 deletions
+35 -8
View File
@@ -314,9 +314,8 @@ class PanelWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("牛马软件柜")
self.setWindowFlags(
Qt.WindowType.FramelessWindowHint | Qt.WindowType.WindowStaysOnTopHint
)
# 默认不置顶;仅图钉开启时与悬浮球一并置顶(见 _apply_pin_window_layer)
self.setWindowFlags(Qt.WindowType.FramelessWindowHint)
# 任务栏/开始菜单图标:使用项目 logo.png
logo_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "logo.png")
if os.path.exists(logo_path):
@@ -522,7 +521,9 @@ class PanelWindow(QWidget):
self.pin_btn = QPushButton()
self.pin_btn.setFixedSize(26, 26)
self.pin_btn.setToolTip("固定:开启后最小化只收缩内容,不变悬浮球")
self.pin_btn.setToolTip(
"固定:面板与悬浮球置顶;开启后最小化只收缩内容,不变悬浮球"
)
self.pin_btn.setStyleSheet("border:none; background:transparent;")
self.pin_btn.clicked.connect(self._toggle_pin)
@@ -995,18 +996,45 @@ class PanelWindow(QWidget):
f"已创建分组「{group_name}」,共 {count} 个文件(实时读取)。",
)
def _toggle_pin(self):
self._pinned = not self._pinned
def _sync_pin_dependent_ui(self):
"""图钉图标、最小化提示、置顶标志(面板 + 悬浮球)。"""
ic = "#cccccc" if theme.name() == "dark" else "#555555"
self.pin_btn.setIcon(
qta.icon("fa5s.thumbtack", color="#f90" if self._pinned else ic)
)
self.pin_btn.setIconSize(QSize(13, 13))
# 更新最小化按钮 tooltip
if self._pinned:
self._min_btn.setToolTip("收缩内容区(固定模式)")
else:
self._min_btn.setToolTip("最小化到悬浮球")
self._apply_pin_window_layer()
def _apply_pin_window_layer(self):
"""图钉开 → 面板与悬浮球 WindowStaysOnTop;关 → 普通叠放,不挡其他程序。"""
on_top = self._pinned
if getattr(self, "_pin_top_applied", None) is not on_top:
self._pin_top_applied = on_top
was_visible = self.isVisible()
geo = self.geometry()
flags = Qt.WindowType.FramelessWindowHint
if on_top:
flags |= Qt.WindowType.WindowStaysOnTopHint
self.setWindowFlags(flags)
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground, True)
self.setAcceptDrops(True)
logo_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), "logo.png")
if os.path.exists(logo_path):
self.setWindowIcon(QIcon(logo_path))
if was_visible:
self.setGeometry(geo)
self.show()
ball = getattr(self, "_ball_ref", None)
if ball is not None:
ball.set_stays_on_top(on_top)
def _toggle_pin(self):
self._pinned = not self._pinned
self._sync_pin_dependent_ui()
def _on_min_click(self):
"""图钉开启时收缩内容区,否则最小化到悬浮球"""
@@ -1139,7 +1167,6 @@ class PanelWindow(QWidget):
if hasattr(self, "_ball_ref"):
self._ball_ref.show()
self._ball_ref.setWindowOpacity(1.0)
self._ball_ref._idle_timer.start()
def toggle_near(self, ball_pos: QPoint, ball_size: int):
if self.isVisible():