PyQt custom titlebar window (resizable, movable, minimize/maximize/close, etc.)
Project description
pyqt-custom-titlebar-window
PyQt custom titlebar window(resizable, movable, minimize/maximize/close). User can put customized widget in the frame. Drag title bar or menu bar on widget to move the window, double-click it to show maximize/normal.
If you want to set this easily than use pyqt-custom-titlebar-setter.
If you want to use this in various ways than see the example below.
Table of Contents
Requirements
PyQt5 >= 5.15
Setup
python -m pip install pyqt-custom-titlebar-window
Included Packages
-
pyqt-frameless-window - To import parent class
FramelessWindow
-
pyqt-windows-buttons-widget - To provide Windows 10 OS style min/max/close buttons with menu bar
-
pyqt-mac-buttons-widget - To provide macOS style of min/max/close buttons with menu bar
-
pyqt-top-titlebar-widget - For adding top title bar feature
-
python-get-absolute-resource-path - For get absoulte resource path of svg icon to set window icon
Feature
-
If you drag the frame, window will be resized.
-
If you drag the title bar(menu bar if there is no title bar) of inner widget, window will be moved.
-
If you double-click the menu bar, window will be maximized/normalized.
-
Set the window title by itself if you set your inner widget's title with
setWindowTitle
. It also catches thewindowTitleChanged
signal of your inner widget. -
Support full screen feature. When full screen feature turns on, top title bar will disappear. Reappear when it turns off.
-
CustomTitlebarWindow(CustomizedWidgetByUser())
- Constructor. -
setTopTitleBar(self, title: str = '', icon_filename: str = '', font: QFont = QFont('Arial', 12), align=Qt.AlignCenter, bottom_separator=False)
to set title bar on the top of the window. -
setButtons()
to add min/max/close button on the top right corner of title/menu bar -
setButtonHint(hint)
to set hints of buttons. There are three options available(close, min/close, min/max/close). Default value is min/max/close. -
setButtonStyle(style)
to set style of buttons, This accepts only two string('Windows', 'Mac'). -
setMenuTitle(title: str, icon_filename: str, font=QFont('Arial', 12))
to set the icon and title not only on the left side of menu bar, but also set it as window icon and title. -
Frame's color synchronizes with the
QMenuBar
's background color or innerQWidget
's color if inner widget is notQMainWindow
. -
getCornerWidget()
to get corner widget ofQMenuBar
easily -
getInnerWidget()
to get inner widget easily
Example
Code Sample (Menu bar only)
from PyQt5.QtWidgets import QApplication
from pyqt_custom_titlebar_window import CustomTitlebarWindow
from pyqt_dark_calculator import Calculator
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
customTitlebarWindow = CustomTitlebarWindow(Calculator())
# customTitlebarWindow.setButtonHint(hint=['close'])
# customTitlebarWindow.setButtonStyle(style='Mac')
customTitlebarWindow.setButtons()
customTitlebarWindow.show()
app.exec_()
In the code sample, pyqt-dark-calculator is being used as inner widget.
Result
Here's another example with pyqt-dark-notepad.
As you see, existing corner widget doesn't matter.
Code Sample (Including title bar)
from PyQt5.QtWidgets import QApplication
from pyqt_custom_titlebar_window import CustomTitlebarWindow
from pyqt_dark_notepad import DarkNotepad
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
window = DarkNotepad()
customTitlebarWindow = CustomTitlebarWindow(window)
customTitlebarWindow.setTopTitleBar(icon_filename='dark-notepad.svg')
# customTitlebarWindow.setButtonHint(['close'])
# customTitlebarWindow.setButtonStyle(style='Mac')
customTitlebarWindow.setButtons()
customTitlebarWindow.show()
app.exec_()
Result
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 pyqt-custom-titlebar-window-0.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | aff93eba723590a9acb8d804f7425de154a5d27af0fad84dac2390a0fa49c341 |
|
MD5 | 8db76c073532af9c3ab8b7e5980771c9 |
|
BLAKE2b-256 | 1c7fc393fab98ca20ea566a731812964d34c3f12fa78305776098ad67764fce8 |
Hashes for pyqt_custom_titlebar_window-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f7e67a4ffde2d2a78ede15dfd44c574378a4d76025d28fca1512888bbd9805e |
|
MD5 | 559225fbf2c13e9f194896159f340a15 |
|
BLAKE2b-256 | be248dd5bd6cdb46ac8c6a27be54f3b26f6f3db3d0e2890b2a4f78a75272bcb7 |