setToolTip / setWhatsThis

 

ToopTip과 WhatsThis 는

위젯에 대한 정보를 표시합니다.

 

버튼에 사용하는 것이 ToopTip 이고

WhatsThis 는 콤보박스에 사용합니다.

 

사용자가 버튼을 클릭하기 전에

텍스트로 부연 설명을 할 수 있다는

장점이 있습니다.

 

또 <b> </b> 같은 태그를 사용해서

텍스트를 강조할 수도 있습니다.

 

일종의 간단 메뉴얼 같은 것이죠.

PyQt 가 좋은 것이 이런 세심한 기능들이죠.

 

클래스가 다양하고 메소드가 다양하다 보니

다른 GUI에는 없는 이런 자잘한 것들이

매력입니다.

 

PyQt는 다른 GUI에 비해

배우는 시간은 조금 걸리지만

(Learning curve is steep)

어느정도 배우고 나면

자유도가 높아지는

오픈월드 RPG같은 프레임워크입니다.

 

그리고 C++의 Wrapper 기 때문에

나중에 C++ 데스크탑 앱을 개발할 때도

문법만 적응하면 어렵지 않게 적응할 수 있습니다.

 

QComboBox

 

QComboBox의 경우 드롭다운

라디오버튼 이라고 생각하면 쉽습니다.

 

콤보박스도 선택지가 여러개있고

하나만 선택이 가능하죠.

 

콤보박스에 WhatsThis 는 Shift + F1 키로

사용할 수 있습니다.

 

콤보박스는 addItem 과 insertItem 으로

아이템을 추가할 수 있습니다.

 

insertItem 의 경우 인덱스를 지정할 수 있어서

순서를 변경하여 배치하는 것이 가능합니다.

 

예제

아래 예제는 ToopTi과 WhatsThis를

버튼과 콤보박스에 사용하는 코드입니다.

 

보면 어떤 로직이 있기 보다는

그냥 위젯을 설정하고 추가하는

내용들이라 어렵지 않습니다.

 

예제라서 생성자 __init__ 에 몰아넣었는데

앱을 개발하려면 각자 클래스를 만들어 주는게

코드를 이해하는데 도움이 됩니다.

 

초기화 블록을 길게 쓰다보면

나중에 어디에 무슨 위젯을

만들었는지 찾기가 불편합니다.

 

from PyQt5.QtWidgets import (
    QWidget, QVBoxLayout, QApplication,
    QPushButton, QComboBox
)
from PyQt5.QtCore import Qt

import sys

class MyApp(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        self.setWindowTitle("My App")

        # QVBox Layout
        layout = QVBoxLayout()
        self.setLayout(layout)

        # ToolTip
        button = QPushButton("ToolTip")
        button.setToolTip("This is ToopTip")
        button.setToolTipDuration(1000)
        layout.addWidget(button, 0)

        # Shift + F1 WhatsThis
        self.comboBox = QComboBox()
        self.comboBox.addItem("WhatsThis - 1")
        self.comboBox.addItem("WhatsThis - 2")
        self.comboBox.setWhatsThis("This is WhatsThis decription")
        self.comboBox.currentTextChanged.connect(self.comboBoxChanged)
        layout.addWidget(self.comboBox, 0)

        # QComboBox insertItem with Index
        comboBoxI = QComboBox()
        comboBoxI.insertItem(1, "First")
        comboBoxI.insertItem(0, "Zero")
        comboBoxI.insertSeparator(2)
        comboBoxI.insertItem(5, "Fifth")
        comboBoxI.setMaxVisibleItems(2)
        layout.addWidget(comboBoxI, 0)

    def comboBoxChanged(self):
        text =self.comboBox.currentText()
        print(text)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    screen = MyApp()
    screen.resize(300, 200)
    screen.show()

    sys.exit(app.exec_())

ToopTip PyQt5

블로그 포스트나 어떤 프로그래밍 교재라도

클래스의 모든 내용이 나와있지는 않습니다.

 

포스팅은 큰 틀에서의 튜토리얼이나

가이드 정도로 삼고 더 깊이 있게

프로그래밍이 알고 싶다 그러면

PyQt5 레퍼런스 가이드를 잘 활용해야 합니다.

 

공식 레퍼런스가 C++ 기준이지만

PyQt5는 Qt의 binding 이라서

약간 어쩔 수 없습니다.

 

개발사의 유튜브 채널도

꽤 활성화가 되있는 것 같으니

참고하도록 합니다.

 

Qt - YouTube

 

Qt

Build Your World with Qt. Qt is the leading independent technology for cross-platform development. Create connected devices, UIs and applications that run anywhere on any device, on any operating system at any time. Visit http://Qt.io Keep an eye on this Y

www.youtube.com

 

PyQt5 Reference Guide — PyQt 5.7 Reference Guide (bccnsoft.com)

 

PyQt5 Reference Guide — PyQt 5.7 Reference Guide

 

doc.bccnsoft.com

 

공유하기

facebook twitter kakaoTalk kakaostory naver band