dev: 调整整体布局
This commit is contained in:
45
src/cmbx_styles.py
Normal file
45
src/cmbx_styles.py
Normal 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)
|
||||
@@ -1,27 +1,66 @@
|
||||
# coding: utf8
|
||||
from PySide6 import QtWidgets, QtCore, QtGui
|
||||
from .tab_load import TabLoad
|
||||
from .page_load import PageLoad
|
||||
from .cmbx_styles import StyleComboBox
|
||||
|
||||
|
||||
class UiKpsUnifier(object):
|
||||
def __init__(self, window: QtWidgets.QWidget):
|
||||
def __init__(self, window: QtWidgets.QMainWindow):
|
||||
window.setWindowTitle('KeePassXC 多合一')
|
||||
self.cw = QtWidgets.QWidget(window)
|
||||
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.vly_m.addWidget(self.tw_m)
|
||||
self.menu_bar = window.menuBar()
|
||||
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.tw_m.addTab(self.tab_load, "加载")
|
||||
self.tab_query = QtWidgets.QWidget(window)
|
||||
self.tw_m.addTab(self.tab_query, "查询")
|
||||
self.menu_view = self.menu_bar.addMenu("视图")
|
||||
self.act_load = QtGui.QAction("加载", self.cw)
|
||||
self.act_query = QtGui.QAction("查询", self.cw)
|
||||
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):
|
||||
super().__init__(parent)
|
||||
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):
|
||||
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)
|
||||
|
||||
@@ -27,7 +27,7 @@ class WgLoadKps(QtWidgets.QWidget):
|
||||
item.pbn_load.setDisabled(True)
|
||||
|
||||
|
||||
class TabLoad(QtWidgets.QWidget):
|
||||
class PageLoad(QtWidgets.QWidget):
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.hly_m = QtWidgets.QHBoxLayout()
|
||||
Reference in New Issue
Block a user