PyQt-无边框窗口
基于PyQt5的跨平台无边框窗口
功能
- 窗口移动
- 窗口拉伸
- 窗口阴影
- 窗口动画
- Win11窗口快照布局
- Win10毛玻璃效果
- Win11米卡效果
- Win7Aero毛玻璃效果
- macOS毛玻璃效果
安装
通过pip安装:
pip install PyQt5-Frameless-Window
或克隆仓库:
git clone https://github.com/zhiyiYo/PyQt-Frameless-Window.git
python setup.py install
依赖
平台 | 依赖 |
---|---|
Win32 | pywin32 |
Linux | xcffib |
macOS | pyobjc |
用法
要使用无边框窗口,只需继承FramelessWindow
或FramelessMainWindow
。这是一个最小化示例:
import sys
from PyQt5.QtWidgets import QApplication
from qframelesswindow import FramelessWindow
class Window(FramelessWindow):
def __init__(self, parent=None):
super().__init__(parent=parent)
self.setWindowTitle("PyQt-无边框窗口")
self.titleBar.raise_()
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Window()
demo.show()
sys.exit(app.exec_())
对于更复杂的需求,请查看demo.py和main_window.py。
示例
- 普通无边框窗口
- 毛玻璃无边框窗口
文档
想了解更多关于PyQt-Frameless-Window的信息?请阅读帮助文档 👈
注意事项
-
FramelessWindow
提供了一个默认的自定义标题栏。如果你不喜欢它,只需要像demo.py那样重写它。 -
在Win10上移动毛玻璃窗口可能会卡顿。目前没有好的解决方案。也许你可以在移动窗口时禁用毛玻璃效果,但我在源代码中还没有这样做。
-
窗口快照布局默认是禁用的。查看#56了解如何启用它。
-
如果你在Windows上遇到这个问题:
ImportError: DLL load failed while importing win32api
请查看我在stackoverflow或博客上的解决方案。
-
如果你正在使用PySide2、PySide6或PyQt6,你可以从PySide2、PySide6或PyQt6分支下载代码。
支持
如果这个项目对你非常有帮助,而且你想支持这个项目的开发和维护,欢迎通过爱发电或ko-fi赞助我。你的支持令我非常感激 🥰
相关项目
这里是一些使用PyQt-Frameless-Window的项目:
- zhiyiYo/Groove: 一个基于PyQt5的跨平台音乐播放器
- zhiyiYo/Alpha-Gobang-Zero: 一个基于强化学习的五子棋机器人
- zhiyiYo/PyQt-Fluent-Widgets: 一个基于Qt的Fluent Design风格组件库
- zhiyiYo/QMaterialWidgets: 一个基于Qt的Material Design风格组件库
参考资料
- wangwenx190/framelesshelper: 用于Qt Widgets和Qt Quick应用程序的无边框窗口。支持Win32、X11、Wayland和macOS
- libxcb: 使用XCB库进行基本图形编程
许可协议
PyQt-Frameless-Window 采用 GPLv3 许可协议。
版权所有 © 2021 by zhiyiYo.