76 lines
2.3 KiB
Python
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_()
|