I’m working on a project that needs lots of toolbars on screen at once, even though not all of them will be used at the same time. So, I’m modelling this ‘foldable’ dock widget after what I remember Photoshop panels used to be like.
It’s a work in progress, but would like to hear constructive suggestions.
https://blocks.programming.dev/0101100101/42c5d67f86c049baa3500aa38e439f8a
Lets fix the Sphinx in-code documentation (Ignoring should never embed classes within other classes)
class FoldableDockWidget(QDockWidget): """ A simple Qt Widget that adds a 'minimise' button that vertically reduces the dock widget to just the titlebar to allow the dock widget to still take up minimal screen real estate """ class TitleBarWidget(QWidget): def __init__(self, title:str, parent:QWidget=None): """ We create a custom title bar using QWidget as the base. The title bar has to be wrapped in another widget so that its background can be styled easier, otherwise it's impossible to style :param title: the title to appear in the title bar """
Becomes
class FoldableDockWidget(QDockWidget): """ A simple Qt Widget that adds a 'minimise' button that vertically reduces the dock widget to just the titlebar to allow the dock widget to still take up minimal screen real estate """ class TitleBarWidget(QWidget): """Create a custom title bar using :py:class:`~PySide6.QtWidgets.QWidget` as the base. The title bar has to be wrapped in another widget so that its background can be styled easier, otherwise it's impossible to style :ivar title: the title to appear in the title bar :vartype title: str :ivar parent: Default None. Identify parent widget :vartype parent: PySide6.QtWidgets.QWidget | None """ def __init__(self, title: str, parent: QWidget = None) -> None: """class constructor"""
typing matters. Normally separate typing into stub files. The Sphinx in-code documentation includes typing, so the signatures can be simplified and easier to read
def __init__(self, title, parent=None):
Thanks for your response.
Why is this? I have to admit that coming from other languages, it feels dirty, but is there a pythonic good reason for this? The class ‘belongs’ to the FoldableDockWidget class, so I figure it’s the best place to put it.