본문 바로가기
프로그래밍/python

PyQt5 QTextBrowser 사용법 가이드

by 마루의 일상 2024. 6. 4.
728x90
반응형

QTextBrowser는 PyQt5에서 제공하는 위젯 중 하나로, 리치 텍스트와 HTML을 표시할 수 있는 강력한 텍스트 브라우저입니다. 이를 활용하면 텍스트 뷰어를 만들 수 있으며, 하이퍼링크와 이미지 등도 지원합니다. 

목차

  1. QTextBrowser 기본 설정
  2. 텍스트 및 HTML 설정
  3. 하이퍼링크 관리
  4. 이미지 삽입
  5. CSS 스타일 적용
  6. 예제 코드

1. QTextBrowser 기본 설정

기본적인 설정을 살펴보겠습니다.

import sys
from PyQt5.QtWidgets import QApplication, QTextBrowser, QVBoxLayout, QWidget

class TextBrowserDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('QTextBrowser Demo')
        self.setGeometry(100, 100, 800, 600)

        layout = QVBoxLayout()

        self.text_browser = QTextBrowser()
        layout.addWidget(self.text_browser)

        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    demo = TextBrowserDemo()
    demo.show()
    sys.exit(app.exec_())

2. 텍스트 및 HTML 설정

QTextBrowser는 단순 텍스트뿐만 아니라 HTML도 표시할 수 있습니다. 다음 코드를 통해 텍스트와 HTML을 설정해보겠습니다.

self.text_browser.setText("Hello, PyQt5!")
self.text_browser.setHtml("<h1>Welcome to PyQt5</h1><p>This is a <b>QTextBrowser</b> widget.</p>")

3. 하이퍼링크 관리

QTextBrowser는 하이퍼링크를 클릭할 수 있는 기능도 제공합니다. 기본적으로 하이퍼링크를 클릭하면 해당 URL로 이동하지만, 커스텀 동작을 설정할 수도 있습니다.

self.text_browser.setOpenExternalLinks(True)  # 외부 링크를 열도록 설정

# 커스텀 링크 동작 설정
def handle_link_clicked(url):
    print(f"Link clicked: {url.toString()}")

self.text_browser.setOpenExternalLinks(False)  # 외부 링크 열기 비활성화
self.text_browser.anchorClicked.connect(handle_link_clicked)
self.text_browser.setHtml('<a href="http://www.example.com">Example Link</a>')

4. 이미지 삽입

HTML을 사용하여 이미지도 표시할 수 있습니다. 이미지는 로컬 파일이나 URL을 통해 로드할 수 있습니다.

self.text_browser.setHtml('<img src="https://www.example.com/image.png" alt="Example Image">')

5. CSS 스타일 적용

HTML을 사용할 때 CSS를 적용하여 텍스트와 요소들의 스타일을 꾸밀 수 있습니다.

html_content = """
<html>
<head>
<style>
    h1 { color: blue; }
    p { font-size: 18px; }
</style>
</head>
<body>
    <h1>Styled Header</h1>
    <p>This is a styled paragraph.</p>
</body>
</html>
"""
self.text_browser.setHtml(html_content)

6. 예제 코드

지금까지 배운 내용을 종합하여 예제 코드를 작성해보겠습니다.

 
import sys
from PyQt5.QtWidgets import QApplication, QTextBrowser, QVBoxLayout, QWidget

class TextBrowserDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('QTextBrowser Demo')
        self.setGeometry(100, 100, 800, 600)

        layout = QVBoxLayout()

        self.text_browser = QTextBrowser()
        layout.addWidget(self.text_browser)

        self.text_browser.setOpenExternalLinks(False)
        self.text_browser.anchorClicked.connect(self.handle_link_clicked)

        html_content = """
        <html>
        <head>
        <style>
            h1 { color: blue; }
            p { font-size: 18px; }
        </style>
        </head>
        <body>
            <h1>Welcome to PyQt5</h1>
            <p>This is a <b>QTextBrowser</b> widget.</p>
            <a href="http://www.example.com">Example Link</a>
            <br>
            <img src="https://www.example.com/image.png" alt="Example Image">
        </body>
        </html>
        """
        self.text_browser.setHtml(html_content)

        self.setLayout(layout)

    def handle_link_clicked(self, url):
        print(f"Link clicked: {url.toString()}")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    demo = TextBrowserDemo()
    demo.show()
    sys.exit(app.exec_())
 

이 예제 코드를 통해 QTextBrowser의 다양한 기능을 활용할 수 있습니다. 

728x90
반응형