[PySide2] TextEdit의 textChanged 이벤트를 받아 개행 문자 삭제

2024. 1. 26. 20:42프로젝트 로그/테스트x솔루션 JIG 개발기

반응형

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_()
반응형