프로젝트 로그/테스트x솔루션 JIG 개발기
[PySide2] TextEdit의 textChanged 이벤트를 받아 개행 문자 삭제
Life4IoT.rnd
2024. 1. 26. 20:42
반응형
Example Code
TextEdit에서 입력된 값이 변경될 때 마다 이벤트를 받아 개행문자가 있는지 확인하고 삭제하는 예제입니다.
TextEdit에 수정된 문자열을 입력하면서도 이벤트가 발생 할 수 있기 때문에 아래와 같이 무한루프를 방지하기 위한 코드를 추가 하였습니다.
from PySide2.QtWidgets import QApplication, QTextEdit, QVBoxLayout, QWidget
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 레이아웃 설정
self.layout = QVBoxLayout(self)
# QTextEdit 위젯 생성 및 레이아웃에 추가
self.text_edit = QTextEdit()
self.layout.addWidget(self.text_edit)
# QTextEdit의 textChanged 시그널에 슬롯(함수) 연결
self.text_edit.textChanged.connect(self.on_text_changed)
def on_text_changed(self):
# 현재 QTextEdit의 텍스트를 가져옵니다.
text = self.text_edit.toPlainText()
# CR과 LF를 제거합니다.
modified_text = text.replace('\r', '').replace('\n', '')
# 현재 텍스트와 수정된 텍스트가 다를 경우, QTextEdit를 업데이트합니다.
if text != modified_text:
# 블록 시그널을 사용하여 무한 루프를 방지합니다.
self.text_edit.blockSignals(True)
self.text_edit.setText(modified_text)
self.text_edit.blockSignals(False)
# 애플리케이션 생성
app = QApplication([])
# 위젯 생성 및 표시
my_widget = MyWidget()
my_widget.show()
# 애플리케이션 실행
app.exec_()
반응형