Qt/PyQt5 강좌

pyQt5 다중 탭에 텍스트 에디터가 포함된 예제

webnautes 2024. 8. 8. 22:47
반응형

다중 탭마다 텍스트 에디터가 포함된 pyQt5 예제코드입니다.

 

2024. 8. 8  최초작성




실행시키면 탭이 보입니다. 아래쪽에 보이는 버튼을 클릭하면

 



탭별로 추가되있는 텍스트 에디터에 텍스트가 추가됩니다.

 



 

 

전체 코드입니다.



import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QTabWidget, QTextEdit, QPushButton

class MultiTabTextEditor(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("다중 탭 텍스트 에디터")
        self.setGeometry(100, 100, 800, 600)

        # 중앙 위젯 생성
        central_widget = QWidget(self)
        self.setCentralWidget(central_widget)

        # 수직 레이아웃 생성
        layout = QVBoxLayout()

        # 탭 위젯 생성
        self.tab_widget = QTabWidget()

        # 빈 탭 추가
        self.add_tab("일기")
        self.add_tab("쇼핑 목록")
        self.add_tab("할 일")

        # 데이터 추가 버튼
        self.add_data_button = QPushButton("데이터 추가")
        self.add_data_button.clicked.connect(self.add_data_to_tabs)

        # 레이아웃에 위젯 추가
        layout.addWidget(self.tab_widget)
        layout.addWidget(self.add_data_button)

        # 중앙 위젯에 레이아웃 설정
        central_widget.setLayout(layout)

    def add_tab(self, name):
        # 새 텍스트 편집 위젯 생성
        text_edit = QTextEdit()
        # 탭 위젯에 새 탭 추가
        self.tab_widget.addTab(text_edit, name)

    def add_data_to_tabs(self):
        # 각 탭에 데이터 추가
        self.set_tab_content(0, "오늘은 날씨가 좋아서 공원에 다녀왔습니다. 꽃들이 예쁘게 피어있었고, 산책하는 사람들도 많았습니다.")
        self.set_tab_content(1, "1. 우유\n2. 빵\n3. 계란\n4. 사과\n5. 치즈")
        self.set_tab_content(2, "- 보고서 작성하기\n- 운동 30분\n- 친구와 저녁 약속\n- 책 읽기")

        # 버튼 비활성화
        self.add_data_button.setEnabled(False)

    def set_tab_content(self, index, content):
        text_edit = self.tab_widget.widget(index)
        if isinstance(text_edit, QTextEdit):
            text_edit.setPlainText(content)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MultiTabTextEditor()
    window.show()
    sys.exit(app.exec_())



반응형