def setPixmap(self, which, poc): """设置图片 :param which: Theme = 0,Color = 1,Picture = 2 :param poc: color or path """ self._which = which self._poc = poc if not hasattr(self, '_UiMainWindow'): # 创建一个隐藏的主界面 self._UiMainWindow = QWidget() self.layout = QVBoxLayout(self._UiMainWindow) ui = Skin_MainLayout() self.layout.addWidget(ui) # 修改名字防止受app的style影响 ui.setObjectName('widgetMain1') self._UiMainWindow.setAttribute(Qt.WA_TranslucentBackground, True) self._UiMainWindow.setWindowFlags(self.windowFlags() | Qt.FramelessWindowHint) self._UiMainWindow.hide() if which == self.Theme: self.labelPreviewImage.setPixmap( QPixmap(poc).scaledToWidth(400, Qt.SmoothTransformation)) return elif which == self.Color: ThemeManager.loadColourfulTheme(poc, self._UiMainWindow, {'widgetMain': 'widgetMain1'}) # 对隐藏窗口截图 # 至于为什么要加延迟, 设置样式后可能UI还没刷新 self._UiMainWindow.repaint() QTimer.singleShot(100, self._updatePixmap)
def _initStyle(self): colourful = Setting.value('colourful') if colourful: ThemeManager.loadFont() if isinstance(colourful, QColor): ThemeManager.loadColourfulTheme(colourful) else: # json数据转渐变 ThemeManager.loadColourfulTheme( GradientUtils.toGradient(colourful)) else: ThemeManager.loadTheme()
def on_buttonPreviewApply_clicked(self): """设置主题 """ if self._which == self.Theme: ThemeManager.loadUserTheme( os.path.basename(os.path.dirname(self._poc))) Setting.setValue('picture', None) Setting.setValue('colourful', None) elif self._which == self.Color: ThemeManager.loadColourfulTheme(self._poc) if isinstance(self._poc, QColor): Setting.setValue('colourful', self._poc) else: # 渐变需要转成字典数据 Setting.setValue('colourful', GradientUtils.toJson(self._poc)) Setting.setValue('picture', None)
def _initUi(self): """初始UI""" self.setupUi(self) # 隐藏还原按钮 self.buttonNormal.setVisible(False) # 隐藏目录树的滑动条 self.treeViewCatalogs.verticalScrollBar().setVisible(False) # 加载鼠标样式 ThemeManager.loadCursor(self.widgetMain) ThemeManager.setPointerCursors([ self.buttonHead, # 主界面头像 self.buttonClear, # 主界面清空按钮 self.buttonGithub, # Github按钮 self.buttonQQ, # QQ按钮 self.buttonGroup, # 群按钮 self.buttonBackToUp, # 返回顶部按钮 self.buttonHome # 显示主页readme ]) # 安装事件过滤器用于还原鼠标样式 self.widgetMain.installEventFilter(self) # 绑定返回顶部提示框 ToolTip.bind(self.buttonBackToUp) ToolTip.bind(self.buttonHome) # 头像提示控件 ToolTip.bind(self.buttonHead) # 加载主题 colourful = Setting.value('colourful') picture = Setting.value('picture', '', str) AppLog.debug('colourful: %s', str(colourful)) AppLog.debug('picture: %s', picture) if picture: ThemeManager.loadFont() ThemeManager.loadPictureTheme(picture) elif colourful: ThemeManager.loadFont() if isinstance(picture, QColor): ThemeManager.loadColourfulTheme(colourful) else: # json数据转渐变 ThemeManager.loadColourfulTheme( GradientUtils.toGradient(colourful)) else: ThemeManager.loadTheme()