A cross-platform frameless window based on pyqt5, support Win32, X11, Wayland and macOS.
Project description
PyQt-Frameless-Window
A cross-platform frameless window based on PyQt5
Features
- Moving
- Stretching
- Window shadow
- Window animation
- Win11 snap layout
- Win10 acrylic blur
- Win11 mica blur
- Win7 Aero blur
- MacOS blur
Install
To install use pip:
pip install PyQt5-Frameless-Window
Or clone the repo:
git clone https://github.com/zhiyiYo/PyQt-Frameless-Window.git
python setup.py install
Requirements
Platform | Requirement |
---|---|
Win32 | pywin32 |
Linux | xcffib |
MacOS | pyobjc |
Usage
To use the frameless window, you only need to inherit FramelessWindow
or FramelessMainWindow
. Here is a minimal example:
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-Frameless-Window")
self.titleBar.raise_()
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Window()
demo.show()
sys.exit(app.exec_())
For more complex requirements, see demo.py and main_window.py.
Examples
- Normal frameless window
- Acrylic frameless window
Document
Want to know more about PyQt-Frameless-Window? Please read the help document 👈
Notes
-
FramelessWindow
provides a default custom title bar. If you don't like it, just rewrite it as demo.py does. -
Moving the acrylic window on Win10 may get stuck. At present, there is no good solution. Maybe you can disable the acrylic effect when moving the window, but I haven't done this in the source code.
-
Snap layout is not enabled by default. See #56 to learn how to enable it.
-
If you encounter this problem on Windows:
ImportError: DLL load failed while importing win32api
see my answer on stackoverflow or my blog for the solution.
-
If you are using PySide2, PySide6 or PyQt6, you can download the code in PySide2, PySide6 or PyQt6 branch.
See Also
Here are some projects that use PyQt-Frameless-Window:
- zhiyiYo/Groove: A cross-platform music player based on PyQt5
- zhiyiYo/Alpha-Gobang-Zero: A gobang robot based on reinforcement learning
- zhiyiYo/PyQt-Fluent-Widgets: A fluent design widgets library based on PyQt5
Reference
- wangwenx190/framelesshelper: Frameless windows for Qt Widgets and Qt Quick applications. Support Win32, X11, Wayland and macOS
- libxcb: Basic Graphics Programming With The XCB Library
License
PyQt-Frameless-Window is licensed under GPLv3.
Copyright © 2021 by zhiyiYo.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for PyQt5-Frameless-Window-0.2.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51cf3e21d2b6534d8fb4e59a1a16626beae3c6c8a3dd0bde2f258afddaab2b2e |
|
MD5 | 10dc6580e4ce3ab51705f3323d1aa0b4 |
|
BLAKE2b-256 | ddd12f4075bf304d4d720f7300c8404516e98784ab356aa24e6744db551001f8 |
Hashes for PyQt5_Frameless_Window-0.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df9ef7ba4a174527e5eeac7f5385ed4e50fa7f9738b3e40eea9315e706b24992 |
|
MD5 | 1df8e345f6d976411b45ad2415ff44c3 |
|
BLAKE2b-256 | 2e511d581c89c4a4382c8a0a6856efbaeeec2b332a308d2a7201c449c0186b13 |