일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 엑셀
- 윈도우11
- pythongui
- office
- win32com
- Excel
- 문자열
- 안드로이드
- Outlook
- 파워포인트
- 파이썬
- Windows10
- Windows11
- 아웃룩
- html
- 오피스
- python
- Android
- 파이썬GUI
- python3
- VBA
- git
- 깃
- pyqt5
- matlab
- 비주얼베이직
- 파이썬3
- 윈도우10
- pandas
- windows
Appia의 IT세상
파이썬[Python GUI, PyQt5 Tutorial 018] 텍스트(QText) 편집 공간 만들기 본문
파이썬[Python GUI, PyQt5 Tutorial 018] 텍스트(QText) 편집 공간 만들기
Appia 2020. 7. 4. 07:05파이썬[Python GUI, PyQt5 Tutorial 018] 텍스트(QText) 편집 공간 만들기
이번 포스팅에서는 텍스트를 편집할 수 있는 공간인 QText에 대해서 생성하고, 관련된 부분에 대해서 이야기를 해보고자 합니다. 물론, 앞서서 위젯(Widget)에 대해서 살펴봤습니다. 하지만, 노트 패드등과 같이 텍스트를 입력하거나, 편집할 수 있는 부분을 만들기 위해서는 QText라는 위젯을 추가해줘야 합니다. 대부분의 위젯은 다음과 같은 모양입니다.
관련해서 코드 부분에서 한번 살펴보도록 하겠습니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QVBoxLayout
class QtGUI(QWidget):
def __init__(self):
super().__init__()
self.text = QTextEdit()
self.text.setAcceptRichText(True)
vbox = QVBoxLayout()
vbox.addWidget(self.text)
vbox.addStretch()
self.setLayout(vbox)
self.setWindowTitle('QTextEdit')
self.setGeometry(300, 300, 300, 200)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = QtGUI()
app.exec_()
|
cs |
일단 위의 전체 코드에서 일정 부분에 대해서 간단한 설명을 추가하도록 하겠습니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTextEdit, QVBoxLayout
|
cs |
위에서 QTextEdit부분을 통해서 위젯을 추가할 것입니다. 따라서, QTextEdit 부분을 추가해주셔야 합니다.
self.text = QTextEdit()
self.text.setAcceptRichText(True)
vbox = QVBoxLayout()
vbox.addWidget(self.text)
vbox.addStretch()
self.setLayout(vbox)
|
cs |
일단, QTextEdit()을 통해서 Text를 입력할 수 있는 공간을 생성합니다. 그 다음에 중요한 것은 setAcceptRichText(True) 부분입니다. 여기에서 RichText와 PlainText를 비교하면서 살펴보겠습니다.
일단, PlainText는 그냥 글자 그 자체입니다. 아무런 특징 없이 그냥 글자를 의미합니다. 즉, 아무런 서식 및 폰트 등이 적용 되지 않은 것을 의미합니다.
그럼, RichText는 무엇일까요? 바로, 글꼴 등 서식등이 적용되는 것을 의믜합니다. 위에서는 보이는 setAcceptRichText는 바로 이렇게 굻게, 글꼴등이 적용되는 것을 의미합니다.
실제 위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
물론, 다음과 같은 이벤트를 연결할 수 있습니다.
cursorPositionChanged | 현재 커서 위치가 바뀔경우 |
selectionChanged | 선택 범위가 변경되었을 경우 |
textChanged | Text를 변경이 되었을 경우 |
그럼 다음 코드에 이벤트를 한번 연결해보겠습니다.
import sys
from PyQt5.QtWidgets import QApplication,QLabel, QWidget, QTextEdit, QVBoxLayout
class QtGUI(QWidget):
def __init__(self):
super().__init__()
self.text = QTextEdit()
self.text.setAcceptRichText(True)
self.teLabel = QLabel(self)
vbox = QVBoxLayout()
vbox.addWidget(self.teLabel)
vbox.addWidget(self.text)
vbox.addStretch()
self.setLayout(vbox)
self.text.textChanged.connect(self.text_changed)
self.setWindowTitle('QTextEdit')
self.setGeometry(300, 300, 300, 200)
self.show()
def text_changed(self):
self.teLabel.setText(self.text.toPlainText())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = QtGUI()
app.exec_()
|
cs |
위에 코드에서 크게 2가지 부분이 추가 되었습니다. 다음과 같이 self.text.textChanged.connect()를 통해서 text가 변경되었을 경우 라벨에 텍스트가 출력되게 합니다.
이와 같은 형태로 한번 코딩을 해봤습니다. 파이썬[Python GUI, PyQt5 Tutorial 017] 텍스트(QText) 편집 공간 만들기라는 주제로 오늘은 포스팅을 해봤습니다. QText에 입력된 글자들을 라벨에 출력되게 합니다. 혹시 궁금하신점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.