본문으로 바로가기

파이썬(Python) PyQt5 QTooltip 툴팁 표시하기

category 파이썬/PyQt5 2021. 11. 23. 10:58
반응형

툴팁은 모든 윈도우 GUI 객체에 문자열로 힌트를 보여주고 싶을 때 사용합니다. 힌트는 해당 객체에 마우스를 올렸을 때 나타납니다. QTooltip 으로 보여주는 힌트는 HTML 디자인이 가능합니다. 일반 텍스트 디자인 요소를 적용해 자신만의 스타일을 만들 수 있습니다.

 

먼저 툴팁을 표시할 버튼을 추가합니다. 다음은 개체에 툴팁 세팅을 합니다. 위젯마다 setTooltip() 함수가 있어서 툴팁 개체를 생성할 때 사용합니다. 파라미터로 넘긴 문자열은 툴팁에 표시할 텍스트입니다.

from PyQt5.QtWidgets import QPushButton

# 툴팁 표시할 QPushButton
self.pb = QPushButton('Tooltip Button' ,self)
self.pb.setGeometry(10, 10, 150, 30)
self.pb.clicked.connect(self.click_tooltip)
self.pb.setToolTip('Print Button Tooltip')

 

 

서두에 이야기했듯이 툴팁 텍스트는 디자인이 가능합니다. setToolTip() 은 일반 텍스트뿐만 아니라 HTML 태그를 적용할 수 있습니다. 아래 소스처럼 <b> 태그를 적용하면 텍스트를 굵게 표시합니다.

self.pb = QPushButton('Tooltip Button' ,self)
self.pb.setGeometry(10, 10, 150, 30)
self.pb.clicked.connect(self.click_tooltip)
self.pb.setToolTip('Print <br> Button <b>Tooltip</b>')

 

다음은 윈도우 내에 사용하는 툴팁 전체의 폰트와 사이즈를 조절해 보겠습니다. 이것은 특정 위젯에만 구분해서 적용할 수는 없습니다. QToolTip setFont() 함수를 이용해서 변경해야 합니다. setFont() 의 파라미터로 QFont 객체를 생성해서 넘깁니다.

from PyQt5.QtWidgets import QToolTip
from PyQt5.QtGui import QFont

# 툴팁 전체의 폰트 종류와 크기를 조절한다.
QToolTip.setFont(QFont('SansSerif', 16))

 

전체 소스는 다음과 같습니다.

#!/usr/bin/env python3
import sys
from PyQt5.QtWidgets import QPushButton, QToolTip, \
    QMainWindow, QApplication, QCheckBox

from PyQt5.QtGui import QFont

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        # 윈도우 설정
        self.setGeometry(300, 300, 500, 300)  # x, y, w, h
        self.setWindowTitle('Status Window')

        # 툴팁 표시할 QPushButton
        self.pb = QPushButton('Tooltip Button' ,self)
        self.pb.setGeometry(10, 10, 150, 30)
        self.pb.clicked.connect(self.click_tooltip)
        self.pb.setToolTip('Print Button Tooltip')
        # self.pb.setToolTip('Print <br> Button <b>Tooltip</b>')

        # 툴팁 전체의 폰트 종류와 크기를 조절한다.
        QToolTip.setFont(QFont('SansSerif', 16))

    # QCheckBox 선택 이벤트
    def click_tooltip(self):
        print('tooltip button click')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())
반응형