dev: 调整整体布局

This commit is contained in:
Julian Freeman
2024-07-19 01:12:36 -04:00
parent 4b147edaa3
commit 287f950d41
3 changed files with 95 additions and 11 deletions

45
src/cmbx_styles.py Normal file
View File

@@ -0,0 +1,45 @@
# coding: utf8
import sys
from PySide6 import __version__ as pyside6_version
from PySide6.QtCore import QAbstractListModel, QModelIndex, Qt, QObject
from PySide6.QtWidgets import QComboBox, QApplication, QWidget
class _StyleListModel(QAbstractListModel):
def __init__(self, parent: QObject = None):
super().__init__(parent)
if sys.platform == "win32":
self.styles = ["windowsvista", "Fusion", "Windows"]
ver = list(map(lambda s: int(s), pyside6_version.split(".")))
if ver >= [6, 7, 0]:
self.styles.insert(0, "windows11")
elif sys.platform == "darwin":
self.styles = ["macOS", "Fusion", "Windows"]
elif sys.platform == "linux":
self.styles = ["Fusion", "Windows"]
else:
self.styles = []
def rowCount(self, parent: QModelIndex = ...):
return len(self.styles)
def data(self, index: QModelIndex, role: int = ...):
row = index.row()
if role == Qt.ItemDataRole.DisplayRole:
return self.styles[row]
class StyleComboBox(QComboBox):
def __init__(self, parent: QWidget = None):
super().__init__(parent)
self.setModel(_StyleListModel(self))
self.currentIndexChanged.connect(self.on_self_current_index_changed)
def on_self_current_index_changed(self, index: int):
model = self.model()
idx = model.index(index, 0)
style = model.data(idx, Qt.ItemDataRole.DisplayRole)
QApplication.setStyle(style)

View File

@@ -1,27 +1,66 @@
# coding: utf8 # coding: utf8
from PySide6 import QtWidgets, QtCore, QtGui from PySide6 import QtWidgets, QtCore, QtGui
from .tab_load import TabLoad from .page_load import PageLoad
from .cmbx_styles import StyleComboBox
class UiKpsUnifier(object): class UiKpsUnifier(object):
def __init__(self, window: QtWidgets.QWidget): def __init__(self, window: QtWidgets.QMainWindow):
window.setWindowTitle('KeePassXC 多合一') window.setWindowTitle('KeePassXC 多合一')
self.cw = QtWidgets.QWidget(window)
self.vly_m = QtWidgets.QVBoxLayout() self.vly_m = QtWidgets.QVBoxLayout()
window.setLayout(self.vly_m) self.cw.setLayout(self.vly_m)
window.setCentralWidget(self.cw)
self.tw_m = QtWidgets.QTabWidget(window) self.menu_bar = window.menuBar()
self.vly_m.addWidget(self.tw_m) self.menu_file = self.menu_bar.addMenu("文件")
self.act_new = QtGui.QAction("新建", self.cw)
self.act_open = QtGui.QAction("打开", self.cw)
self.menu_file.addActions([self.act_new, self.act_open])
self.tab_load = TabLoad(window) self.menu_view = self.menu_bar.addMenu("视图")
self.tw_m.addTab(self.tab_load, "加载") self.act_load = QtGui.QAction("加载", self.cw)
self.tab_query = QtWidgets.QWidget(window) self.act_query = QtGui.QAction("查询", self.cw)
self.tw_m.addTab(self.tab_query, "查询") self.menu_view.addActions([self.act_load, self.act_query])
self.hly_top = QtWidgets.QHBoxLayout()
self.vly_m.addLayout(self.hly_top)
self.lne_db_path = QtWidgets.QLineEdit(self.cw)
self.lne_db_path.setEnabled(False)
self.cmbx_styles = StyleComboBox(self.cw)
self.hly_top.addWidget(self.lne_db_path)
self.hly_top.addWidget(self.cmbx_styles)
self.sw_m = QtWidgets.QStackedWidget(self.cw)
self.vly_m.addWidget(self.sw_m)
self.page_load = PageLoad(self.cw)
self.sw_m.addWidget(self.page_load)
self.page_query = QtWidgets.QWidget(self.cw)
self.sw_m.addWidget(self.page_query)
class KpsUnifier(QtWidgets.QWidget): class KpsUnifier(QtWidgets.QMainWindow):
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent) super().__init__(parent)
self.ui = UiKpsUnifier(self) self.ui = UiKpsUnifier(self)
self.ui.act_open.triggered.connect(self.on_act_open_triggered)
self.ui.act_load.triggered.connect(self.on_act_load_triggered)
self.ui.act_query.triggered.connect(self.on_act_query_triggered)
def sizeHint(self): def sizeHint(self):
return QtCore.QSize(860, 640) return QtCore.QSize(860, 640)
def on_act_open_triggered(self):
filename, _ = QtWidgets.QFileDialog.getOpenFileName(self, "打开", "../")
if len(filename) == 0:
return
self.ui.lne_db_path.setText(filename)
def on_act_load_triggered(self):
self.ui.sw_m.setCurrentIndex(0)
def on_act_query_triggered(self):
self.ui.sw_m.setCurrentIndex(1)

View File

@@ -27,7 +27,7 @@ class WgLoadKps(QtWidgets.QWidget):
item.pbn_load.setDisabled(True) item.pbn_load.setDisabled(True)
class TabLoad(QtWidgets.QWidget): class PageLoad(QtWidgets.QWidget):
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent) super().__init__(parent)
self.hly_m = QtWidgets.QHBoxLayout() self.hly_m = QtWidgets.QHBoxLayout()