def __init__(self, styleoptions, parent=None): super(BaseDialog, self).__init__(parent) title = styleoptions['title'] windowicon = styleoptions['windowicon'] minsize = styleoptions['minsize'] size = styleoptions['size'] logo_title = styleoptions['logo_title'] logo_img_url = styleoptions['logo_img_url'] self.setWindowTitle(title) self.setWindowIcon(QtGui.QIcon(windowicon)) # 设置程序图标 self.setMinimumSize(minsize[0], minsize[1]) self.setWindowFlags(QtCore.Qt.FramelessWindowHint) # 无边框, 带系统菜单, 可以最小化 self.logowidget = DynamicTextWidget(logo_title, logo_img_url) # 主布局 mainlayout = QtGui.QVBoxLayout() mainlayout.addWidget(self.logowidget) self.setLayout(mainlayout) # logger.info(os.sep.join([os.getcwd(), 'utildialogskin', 'qss', 'dialog.qss'])) if os.path.isdir(os.sep.join([os.getcwd(), 'utildialogskin'])): setskin(self, os.sep.join([os.getcwd(), 'utildialogskin', 'qss', 'dialog.qss'])) # 设置主窗口样式 elif os.path.isdir(os.sep.join([os.getcwd(), 'utildialog', 'utildialogskin'])): setskin(self, os.sep.join([os.getcwd(), 'utildialog', 'utildialogskin', 'qss', 'dialog.qss'])) # 设置主窗口样式 # self.setStyleSheet(style) # 设置主窗口样式 self.resize(size[0], size[1])
def __init__(self, styleoptions, parent=None): super(BaseDialog2, self).__init__(parent) title = styleoptions['title'] windowicon = styleoptions['windowicon'] minsize = styleoptions['minsize'] size = styleoptions['size'] logo_title = styleoptions['logo_title'] logo_img_url = styleoptions['logo_img_url'] self.setWindowTitle(title) self.setWindowIcon(QtGui.QIcon(windowicon)) # 设置程序图标 self.setMinimumSize(minsize[0], minsize[1]) self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowMinimizeButtonHint) # 无边框, 带系统菜单, 可以最小化 # logo显示 self.logowidget = QtGui.QWidget() logo_mainlayout = QtGui.QGridLayout() bg = QtGui.QLabel(logo_title) bg.setAlignment(QtCore.Qt.AlignCenter) logo_mainlayout.addWidget(bg) self.logowidget.setLayout(logo_mainlayout) self.bg = logo_img_url setbg(self.logowidget, self.bg) # 主布局 mainlayout = QtGui.QVBoxLayout() mainlayout.addWidget(self.logowidget) self.setLayout(mainlayout) # setskin(self, os.sep.join([__file__.split('utildialog')[0], 'utildialogskin', 'qss', 'dialog.qss'])) # 设置主窗口样式 setskin(self, 'D:\GitHub\QSoftKeyer\utildialogskin\qss\dialog.qss') self.resize(size[0], size[1])
def createMenus(self): menusettings = windowsoptions['mainwindow']['menusettings'] menubar = self.menuBar() menubar.setVisible(menusettings['visual']) for menu in menusettings['menus']: setattr( self, '%smenu' % menu['name'], menubar.addMenu(u'%s%s' % (menu['name'], menu['name_zh'])) ) submenu = getattr(self, '%smenu' % menu['name']) for menuaction in menu['actions']: setattr( self, '%sAction' % menuaction['trigger'], QtGui.QAction( QtGui.QIcon(QtGui.QPixmap(menuaction['icon'])), '%s%s' % (menuaction['name'], menuaction['name_zh']), self ) ) if hasattr(self, 'action%s' % menuaction['trigger']): action = getattr(self, '%sAction' % menuaction['trigger']) action.setShortcut(QtGui.QKeySequence(menuaction['shortcut'])) submenu.addAction(action) action.triggered.connect( getattr(self, 'action%s' % menuaction['trigger']) ) else: action = getattr(self, '%sAction' % menuaction['trigger']) action.setShortcut(QtGui.QKeySequence(menuaction['shortcut'])) submenu.addAction(action) action.triggered.connect( getattr(self, 'actionNotImplement') )
def createToolbars(self): toolbarsettings = windowsoptions['mainwindow']['toolbarsettings'] self.toolbar = QtGui.QToolBar(self) self.toolbar.setMovable(toolbarsettings['movable']) self.toolbar.setVisible(toolbarsettings['visual']) self.addToolBar(toolbarsettings['dockArea'], self.toolbar) for toolbar in toolbarsettings['toolbars']: setattr( self, '%sAction' % toolbar['trigger'], QtGui.QAction( QtGui.QIcon(QtGui.QPixmap(toolbar['icon'])), '%s%s' % (toolbar['name'], toolbar['name_zh']), self ) ) if hasattr(self, 'action%s' % toolbar['trigger']): action = getattr(self, '%sAction' % toolbar['trigger']) action.setShortcut(QtGui.QKeySequence(toolbar['shortcut'])) action.setToolTip(toolbar['tooltip']) self.toolbar.addAction(action) action.triggered.connect( getattr(self, 'action%s' % toolbar['trigger']) ) self.toolbar.widgetForAction(action).setObjectName(toolbar['id']) else: action = getattr(self, '%sAction' % toolbar['trigger']) action.setShortcut(QtGui.QKeySequence(toolbar['shortcut'])) action.setToolTip(toolbar['tooltip']) self.toolbar.addAction(action) action.triggered.connect( getattr(self, 'actionNotImplement') ) self.toolbar.widgetForAction(action).setObjectName(toolbar['id'])
def initFrame(self): title = windowsoptions['mainwindow']['title'] postion = windowsoptions['mainwindow']['postion'] minsize = windowsoptions['mainwindow']['minsize'] size = windowsoptions['mainwindow']['size'] windowicon = windowsoptions['mainwindow']['windowicon'] fullscreenflag = windowsoptions['mainwindow']['fullscreenflag'] navigationvisual = windowsoptions['mainwindow']['navigationvisual'] self.setWindowTitle(title) self.setWindowIcon(QtGui.QIcon(windowicon)) # 设置程序图标 self.setMinimumSize(minsize[0], minsize[1]) width = QtGui.QDesktopWidget().availableGeometry().width() * 5 / 6 height = QtGui.QDesktopWidget().availableGeometry().height() * 7 / 8 self.setGeometry(postion[0], postion[1], width, height) # 初始化窗口位置和大小 self.center() # 将窗口固定在屏幕中间 self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.fullscreenflag = fullscreenflag # 初始化时非窗口最大话标志 if self.fullscreenflag: self.showFullScreen() else: self.showNormal() self.navigationvisual = navigationvisual # 导航标志,初始化时显示导航 self.layout().setContentsMargins(0, 0, 0, 0) # self.setWindowFlags(QtCore.Qt.CustomizeWindowHint) # 隐藏标题栏, 可以拖动边框改变大小 # self.setWindowFlags(QtCore.Qt.FramelessWindowHint) # 隐藏标题栏, 无法改变大小 self.setWindowFlags(QtCore.Qt.FramelessWindowHint) # 无边框, 带系统菜单, 可以最小化