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 |