简介:
接上一篇
提供两个类 dialog, mainwindow, 根据操作系统作了一个判断, 目前是win ,linux, mac
__version__ = "0.2.4"
import sys
from PyQt5.QtWidgets import QDialog, QMainWindow
from .titlebar import TitleBar, TitleBarButton, SvgTitleBarButton, StandardTitleBar
if sys.platform == "win32":
from .windows import AcrylicWindow
from .windows import WindowsFramelessWindow as FramelessWindow
from .windows import WindowsWindowEffect as WindowEffect
elif sys.platform == "darwin":
from .mac import AcrylicWindow
from .mac import MacFramelessWindow as FramelessWindow
from .mac import MacWindowEffect as WindowEffect
else:
from .linux import LinuxFramelessWindow as FramelessWindow
from .linux import LinuxWindowEffect as WindowEffect
AcrylicWindow = FramelessWindow
class FramelessDialog(QDialog, FramelessWindow):
""" Frameless dialog """
def __init__(self, parent=None):
super().__init__(parent)
self.titleBar.minBtn.hide()
self.titleBar.maxBtn.hide()
self.titleBar.setDoubleClickEnabled(False)
class FramelessMainWindow(QMainWindow, FramelessWindow):
""" Frameless main window """
def __init__(self, parent=None):
super().__init__(parent)
WindowsFramelessWindow
继承关系
class WindowsFramelessWindow(QWidget):
def setTitleBar(self, titleBar):
设置titlebar
def resizeEvent(self, e):
实现qwidget resizeEvent事件。 resize时,调节 titlebar的大小。
def resizeEvent(self, e):
super().resizeEvent(e)
self.titleBar.resize(self.width(), self.titleBar.height())
def setResizeEnabled(self, isEnabled: bool):
设置resize禁用。
class FramelessMainWindow(QMainWindow, FramelessWindow):
无边框窗口
class FramelessDialog(QDialog, FramelessWindow):
弹窗