Files

76 lines
2.3 KiB
Python

# 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_()