完成0.01版本
This commit is contained in:
+35
-8
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user