본문 바로가기

프로그래밍/PyQt5 GUI

33. QTextBrowser

QTextBrowser 위젯은 hypertext navigation을 포함하는 rich text(서식있는 텍스트) 브라우저를 제공합니다. 이 클래스는 읽기 전용이며, QTextEdit의 확장형으로 하이퍼텍스트 문서의 링크들을 사용할 수 있습니다.

편집 가능한 rich text editor를 사용하기 위해서는 QTextEdit을 사용해야 합니다.

또한 하이퍼텍스트 네비게이션이 없는 텍스트 브라우저를 사용하기 위해서 QTextEdit을 setReadOnly()를 사용해서 편집이 불가능하도록 해줍니다.

짧은 rich text를 표시하기 위해서는 QLabel을 사용할 수 있습니다.

 

33-1 예제: ex32

import sys
from PyQt5.QtWidgets import (QApplication, QWidget, QLineEdit, QTextBrowser, QPushButton, QVBoxLayout)


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

    def initUI(self):
        self.le = QLineEdit()
        self.le.returnPressed.connect(self.append_txt)

        self.tb = QTextBrowser()
        self.tb.setAcceptRichText(True)
        self.tb.setOpenExternalLinks(True)

        self.clear_btn = QPushButton('Clear')
        self.clear_btn.clicked.connect(self.clear_text)

        vbox = QVBoxLayout()
        vbox.addWidget(self.le, 0)
        vbox.addWidget(self.tb, 1)
        vbox.addWidget(self.clear_btn, 2)

        self.setLayout(vbox)

        self.setWindowTitle('QTextBrowser')
        self.setGeometry(300, 300, 300, 300)
        self.show()

    def append_txt(self):
        text = self.le.text()
        self.tb.append(text)
        self.le.clear()

    def clear_text(self):
        self.tb.clear()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

33-2 설명

self.le = QLineEdit()
self.le.returnPressed.connect(self.append_text)

줄편집기를 하나 만들고 returnPressed 시그널에 append_text 슬롯을 연결합니다.

self.tb = QTextBrowser()
self.tb.setAcceptRichText(True)
self.tb.setOpenExternalLinks(True)
  • QTextBrowser() 위젯을 이용해서 텍스트 브라우저를 하나 만들었습니다.
  • setAcceptRichText()를 True로 설정해주면, 서식있는 텍스트 (Rich text)를 사용할 수 있습니다.
  • 기본이 True이기 때문에 없어도 되는 부분입니다.
  • setOpenExternalLinks()를 True로 설정해주면, 외부 링크로의 연결이 가능합니다.
self.clear_btn = QPushButton('Clear')
self.clear_btn.pressed.connect(self.clear_text)
  • 푸시 버튼을 클릭시에 발생하는 pressed 시그널에 clear_text 슬롯을 연결합니다.
def append_txt(self):
    text = self.le.text()
    self.tb.append(text)
    self.le.clear()
  • append_text 메서드는 줄편집기에 작성된 텍스트 (self.le.text())를 텍스트 브라우저 (self.tb)에 append 해주는 기능을 합니다.
  • 텍스트가 텍스트 브라우저에 추가되면, clear 메서드를 이용해서 줄편집기에 있던 텍스트를 제거합니다.
def clear_text(self):
    self.tb.clear()
  • clear_text 메서드가 호출되면, clear 메서드를 이용해서 텍스트 브라우저 (self.tb)에 있던 텍스트를 제거합니다.
Plain Text
<b>Bold</b>
<i>Italic</i>
<p style="color: red">Red</p>
<p style="font-size: 20px">20px</p>
<a href="https://www.naver.com">Naver</a>
  • 줄편집기에 위의 텍스트를 순서대로 입력하고 엔터키를 이용해서 텍스트 브라우저에 추가합니다.

33-3 결과

'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글

36. QTableWidget  (0) 2021.07.27
34. QTextEdit  (0) 2021.07.27
32.QDateTimeEdit  (0) 2021.07.27
31. QTimeEdit  (0) 2021.07.27
30. QDateEdit  (0) 2021.07.27