# coding:utf-8 import os import sys from PyQt5.QtCore import Qt, QLocale, QTranslator from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QApplication, QHBoxLayout from qframelesswindow import FramelessWindow, StandardTitleBar from qfluentwidgets import isDarkTheme, FluentTranslator from setting_interface import SettingInterface from config import cfg, Language class Window(FramelessWindow): def __init__(self, parent=None): super().__init__(parent=parent) self.setTitleBar(StandardTitleBar(self)) self.hBoxLayout = QHBoxLayout(self) self.settingInterface = SettingInterface(self) self.hBoxLayout.setContentsMargins(0, 0, 0, 0) self.hBoxLayout.addWidget(self.settingInterface) self.setWindowIcon(QIcon(":/qfluentwidgets/images/logo.png")) self.setWindowTitle("PyQt-Fluent-Widgets") self.resize(1080, 784) desktop = QApplication.desktop().availableGeometry() w, h = desktop.width(), desktop.height() self.move(w//2 - self.width()//2, h//2 - self.height()//2) self.titleBar.raise_() self.setQss() cfg.themeChanged.connect(self.setQss) def setQss(self): theme = 'dark' if isDarkTheme() else 'light' with open(f'resource/qss/{theme}/demo.qss', encoding='utf-8') as f: self.setStyleSheet(f.read()) if __name__ == '__main__': # enable dpi scale if cfg.get(cfg.dpiScale) == "Auto": QApplication.setHighDpiScaleFactorRoundingPolicy( Qt.HighDpiScaleFactorRoundingPolicy.PassThrough) QApplication.setAttribute(Qt.AA_EnableHighDpiScaling) else: os.environ["QT_ENABLE_HIGHDPI_SCALING"] = "0" os.environ["QT_SCALE_FACTOR"] = str(cfg.get(cfg.dpiScale)) QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps) # create application app = QApplication(sys.argv) app.setAttribute(Qt.AA_DontCreateNativeWidgetSiblings) # internationalization locale = cfg.get(cfg.language).value fluentTranslator = FluentTranslator(locale) settingTranslator = QTranslator() settingTranslator.load(locale, "settings", ".", "resource/i18n") app.installTranslator(fluentTranslator) app.installTranslator(settingTranslator) # create main window w = Window() w.show() app.exec_()