pyqt-tooltip-widget

PyQt QWidget as a tooltip


Keywords
pyqt, pyqt-examples, pyqt-tutorial, pyqt5, pyqt5-examples, qenterevent, qleaveevent, qt, qt5, qtooltip
License
MIT
Install
pip install pyqt-tooltip-widget==0.0.1

Documentation

pyqt-tooltip-widget

PyQt QWidget as a tooltip

Requirements

  • PyQt5 >= 5.8

Setup

pip3 install git+https://github.com/yjg30737/pyqt-tooltip-widget.git --upgrade

Detailed Description

This is QWidget which is activated like tooltip. When mouse cursor enters to the widget, ToolTipWidget pops up at the bottom left of the widget. Leave from the widget tooltip will be disappeared.

I made it work by catching QEnterEvent and QLeaveEvent of widget.

ToolTipWidget inherits QWidget, so you can decorate it just like QWidget.

Usage

Just make instance of it like self.toolTip = ToolTipWidget(yourWidget). yourWidget argument is the widget which you want to set tooltip of. Instance should be class variable.

Method Overview

  • setStillOpenWhenCursorLeaveFromToolTipWidget(f: bool) - Tooltip will be kept showing when cursor is inside the tooltip. (this is disabled by default)
  • isStillOpenWhenCursorLeaveFromToolTipWidget() -> bool

Example

Code Sample

from PyQt5.QtWidgets import QWidget, QMainWindow, QHBoxLayout, QPushButton, QApplication, QVBoxLayout
from pyqt_date_table_widget import DateTableWidget
from pyqt_tooltip_widget import ToolTipWidget


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.__initUi()

    def __initUi(self):
        btn = QPushButton('Show Date Table Widget')
        lay = QHBoxLayout()
        lay.addWidget(btn)

        mainWidget = QWidget()
        mainWidget.setLayout(lay)

        ### Make tooltip start ###
        dateTableWidget = DateTableWidget() # https://github.com/yjg30737/pyqt-date-table-widget.git
        lay = QVBoxLayout()
        lay.addWidget(dateTableWidget)
        lay.setContentsMargins(0, 0, 0, 0)

        self.__tooltip = ToolTipWidget(btn)
        self.__tooltip.setFixedSize(200, 200)
        self.__tooltip.setLayout(lay)
        ### Make tooltip end ###

        self.setCentralWidget(mainWidget)


if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    example = MainWindow()
    example.show()
    app.exec_()

Result

image