A resizable movable frameless window for PySide6.
Project description
QtFrameless
Overview
A PySide6 Implementation of a draggable, resizable, and frameless QMainWindow widget. It comes with a built in title bar with standard close, maximize and minimize buttons, however it users can also provide their own Titlebar QWidget subclass.
Features
- Frameless
- Custom Title Bar
- Resizeable
- Draggable
- Pluggable
- Extensible
Install
Using PyPi
pip install QtFrameless
Using git
git clone https://github.com/alexpdev/QtFrameless.git
cd QtFrameless
pip install .
Examples
The simplest possible example:
from PySide6.QtWidgets import QApplication
from QtFrameless import FramelessWindow
app = QApplication([])
FramelessWindow().show()
app.exec()
Another simple Hello World
example that uses subclassing and changes
the window title.
from PySide6.QtWidgets import QApplication
from QtFrameless import FramelessWindow
class MainWindow(FramelessWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("HELLO WORLD!")
Example that creates a QTextEdit
widget as the central widget.
from PySide6.QtWidgets import QApplication, QTextEdit
from QtFrameless import FramelessWindow
class MainWindow(FramelessWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Text Editor")
self.textEdit = QTextEdit(parent=self)
self.setCentralWidget(self.textEdit)
self.setStyleSheet("QTextEdit {border: 1px solid black;}")
An example of providing a custom widget class to use as the title bar.
from PySide6.QtWidgets import *
from QtFrameless import FramelessWindow
class TitleBar(QWidget):
def __init__(self, parent=None):
super().__init__(parent=parent)
self.layout = QHBoxLayout(self)
self.setup_menubar()
self.button = QPushButton("CLOSE", self)
self.button.clicked.connect(app.exit)
self.layout.addWidget(self.menu_bar)
self.layout.addWidget(self.button)
self.setMaximumHeight(50)
def setup_menubar(self):
self.menu_bar = QMenuBar()
self.file_menu = QMenu("File")
self.options_menu = QMenu("Options")
self.edit_menu = QMenu("Edit")
self.menu_bar.addMenu(self.options_menu)
self.menu_bar.addMenu(self.file_menu)
self.menu_bar.addMenu(self.edit_menu)
self.save_action = QAction("Save")
self.exit_action = QAction("Exit")
self.about_action = QAction("About")
self.copy_action = QAction("Copy")
self.paste_action = QAction("Paste")
self.cut_action = QAction("Cut")
self.file_menu.addActions([self.save_action, self.exit_action])
self.edit_menu.addActions(
[self.copy_action, self.cut_action, self.paste_action])
self.options_menu.addAction(self.about_action)
if "main" in __name__:
app = QApplication([])
window = FramelessWindow(titleBar=TitleBar)
window.show()
app.exec()
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
QtFrameless-0.1.1.tar.gz
(15.8 kB
view hashes)
Built Distribution
Close
Hashes for QtFrameless-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7445d99f257d91116764651d2ee8fa303526b4ed02a0505991eabb005833129a |
|
MD5 | f85be28faa361bd48481db5669e8cdfd |
|
BLAKE2b-256 | 27dddbbfa6da28b66ff027316fcebcc5a50bc87b5cadf5bb7f75d59bee6684c3 |