修复:
- 设置页「使用代理更新」改为左文字 + 右侧苹果风格开关(ToggleSwitch 自绘:绿/灰胶囊+滑动圆钮,无图片资源)
This commit is contained in:
+35
-7
@@ -8,8 +8,8 @@ from PyQt5.QtWidgets import (
|
|||||||
QVBoxLayout, QHBoxLayout, QFrame, QMessageBox, QTextEdit,
|
QVBoxLayout, QHBoxLayout, QFrame, QMessageBox, QTextEdit,
|
||||||
QCheckBox, QMenu, QDialog, QLineEdit,
|
QCheckBox, QMenu, QDialog, QLineEdit,
|
||||||
)
|
)
|
||||||
from PyQt5.QtCore import Qt, QTimer, pyqtSignal
|
from PyQt5.QtCore import Qt, QTimer, QRectF, pyqtSignal
|
||||||
from PyQt5.QtGui import QFont, QIcon, QPixmap, QImage, QColor
|
from PyQt5.QtGui import QFont, QIcon, QPixmap, QImage, QColor, QPainter
|
||||||
|
|
||||||
# GUI 窗口在 96 DPI / 100% 缩放下的逻辑尺寸;启用 Qt 高分屏缩放后,
|
# GUI 窗口在 96 DPI / 100% 缩放下的逻辑尺寸;启用 Qt 高分屏缩放后,
|
||||||
# Qt 会自动按 devicePixelRatio 放大/缩小,因此代码里保持逻辑尺寸不变即可。
|
# Qt 会自动按 devicePixelRatio 放大/缩小,因此代码里保持逻辑尺寸不变即可。
|
||||||
@@ -1438,12 +1438,16 @@ class SettingsDialog(QDialog):
|
|||||||
port_row.addWidget(self.ed_port)
|
port_row.addWidget(self.ed_port)
|
||||||
layout.addLayout(port_row)
|
layout.addLayout(port_row)
|
||||||
|
|
||||||
# 更新方式:是否走节点隧道(默认关 = 直连仓库)
|
# 更新方式:左文字 + 右苹果式开关(默认关 = 直连仓库)
|
||||||
self.cb_update_proxy = QCheckBox("使用代理更新")
|
upd_row = QHBoxLayout()
|
||||||
self.cb_update_proxy.setChecked(_update_via_proxy())
|
upd_lab = QLabel("使用代理更新")
|
||||||
|
upd_lab.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 12px;")
|
||||||
|
upd_row.addWidget(upd_lab)
|
||||||
|
upd_row.addStretch()
|
||||||
|
self.cb_update_proxy = ToggleSwitch(checked=_update_via_proxy())
|
||||||
self.cb_update_proxy.setToolTip("开启后检查更新与下载走节点隧道(CONNECT);默认直连仓库")
|
self.cb_update_proxy.setToolTip("开启后检查更新与下载走节点隧道(CONNECT);默认直连仓库")
|
||||||
self.cb_update_proxy.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 12px;")
|
upd_row.addWidget(self.cb_update_proxy)
|
||||||
layout.addWidget(self.cb_update_proxy)
|
layout.addLayout(upd_row)
|
||||||
|
|
||||||
layout.addStretch()
|
layout.addStretch()
|
||||||
|
|
||||||
@@ -1510,6 +1514,30 @@ class SettingsDialog(QDialog):
|
|||||||
log("已退出登录:凭据与节点配置已清除,下次启动或开启代理时需重新登录")
|
log("已退出登录:凭据与节点配置已清除,下次启动或开启代理时需重新登录")
|
||||||
self.accept()
|
self.accept()
|
||||||
|
|
||||||
|
# ── 苹果风格开关 ─────────────────────────────────────
|
||||||
|
|
||||||
|
class ToggleSwitch(QCheckBox):
|
||||||
|
"""苹果风格开关:左关右开,绿/灰胶囊 + 滑动圆钮(自绘,无图片资源)。"""
|
||||||
|
|
||||||
|
def __init__(self, checked=False, parent=None):
|
||||||
|
super().__init__(parent)
|
||||||
|
self.setChecked(checked)
|
||||||
|
self.setFixedSize(42, 22)
|
||||||
|
self.setCursor(Qt.PointingHandCursor)
|
||||||
|
|
||||||
|
def paintEvent(self, e):
|
||||||
|
p = QPainter(self)
|
||||||
|
p.setRenderHint(QPainter.Antialiasing)
|
||||||
|
p.setPen(Qt.NoPen)
|
||||||
|
# 胶囊背景:开=主题绿,关=浅灰
|
||||||
|
p.setBrush(QColor(C_GREEN) if self.isChecked() else QColor("#c8ccd4"))
|
||||||
|
p.drawRoundedRect(QRectF(0, 0, 42, 22), 11, 11)
|
||||||
|
# 白色圆钮:开在右,关在左
|
||||||
|
knob_x = 20.0 if self.isChecked() else 2.0
|
||||||
|
p.setBrush(QColor("#ffffff"))
|
||||||
|
p.drawEllipse(QRectF(knob_x, 2.0, 18.0, 18.0))
|
||||||
|
p.end()
|
||||||
|
|
||||||
# ── 状态指示灯(小圆点) ───────────────────────────────
|
# ── 状态指示灯(小圆点) ───────────────────────────────
|
||||||
|
|
||||||
class StatusDot(QLabel):
|
class StatusDot(QLabel):
|
||||||
|
|||||||
Reference in New Issue
Block a user