728x90
반응형
QTextBrowser는 PyQt5에서 제공하는 위젯 중 하나로, 리치 텍스트와 HTML을 표시할 수 있는 강력한 텍스트 브라우저입니다. 이를 활용하면 텍스트 뷰어를 만들 수 있으며, 하이퍼링크와 이미지 등도 지원합니다.
목차
- QTextBrowser 기본 설정
- 텍스트 및 HTML 설정
- 하이퍼링크 관리
- 이미지 삽입
- CSS 스타일 적용
- 예제 코드
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
반응형
'프로그래밍 > python' 카테고리의 다른 글
PyQt5 QFontDialog 상세한 사용법 (0) | 2024.06.09 |
---|---|
PyQt5로 색상 선택 다이얼로그 만들기 (0) | 2024.06.07 |
PyQt5 QDateEdit 위젯 사용법 (0) | 2024.06.02 |
PyQt5 QSpinBox 사용 방법 가이드 (0) | 2024.06.02 |
PyQt5 QCalendarWidget 사용법 및 속성 (0) | 2024.05.30 |