zenn.skin 무료버전 배포중!
자세히보기

카테고리 없음

[PyQt] 텍스트 입력받기(QLineEdit, QTextEdit)

koosco! 2022. 7. 28. 03:23

PyQt에는 정말 다양한 위젯들이 있습니다. 텍스트를 입력받는 위젯부터 체크박스, 라디오 버튼, 콤보박스, 캘린더, 테이블 등등 GUI를 위한 기능들은 모두 있는 것 같습니다. 앞으로 틈틈이 정리를 하려하는데 오늘은 텍스트를 입력받을 수 있는 QLineEdit와 QTextEdit에 대해서 알아보려 합니다.

 

1. QLineEdit와 QTextEdit

QLineEdit은 한줄로 된 문자열을 입력받을 수 있는 위젯입니다. 반면 QTextEdit은 여러 줄로 된 문자열을 입력받을 수 있습니다.

 

2. QLineEdit와 QTextEdit의 사용

import sys
from PyQt5.QtWidgets import QApplication, QWidget,  QVBoxLayout
from PyQt5.QtWidgets import QPushButton, QLabel, QLineEdit, QTextEdit

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        ''' 이름, 전화번호, 생년월일, 내용'''
        vbox = QVBoxLayout() # widget의 layout을 설정, layout에 대해서는 따로 다룰 예정입니다!
        self.name_label = QLabel("이름") # 텍스트를 출력
        self.name_edit = QLineEdit() # 한줄의 텍스트를 입력 받음
        self.phone_label = QLabel("전화번호")
        self.phone_edit = QLineEdit()
        self.birth_label = QLabel("생년월일")
        self.birth_edit = QLineEdit()
        self.context_label = QLabel("내용")
        self.context = QTextEdit() # 여러줄의 텍스트를 입력 받음
        self.btn = QPushButton("위 내용을 저장")
        self.btn.clicked.connect(self.showresult)
        self.result_label = QLabel("")

        # Layout에 widget을 추가하는 코드
        vbox.addWidget(self.name_label)
        vbox.addWidget(self.name_edit)
        vbox.addWidget(self.phone_label)
        vbox.addWidget(self.phone_edit)
        vbox.addWidget(self.birth_label)
        vbox.addWidget(self.birth_edit)
        vbox.addWidget(self.context_label)
        vbox.addWidget(self.context)
        vbox.addWidget(self.btn)
        vbox.addWidget(self.result_label)
        self.setLayout(vbox)
        
        self.show()

    def showresult(self):
        '''
        입력받은 텍스트들을 출력하는 메서드
        '''
        result = self.name_edit.text() + "\n" + self.phone_edit.text() + "\n" + self.birth_edit.text() + "\n" + \
            self.context.toPlainText()
        # 위젯에 저장된 텍스트는 별도로 text나 toPlainText를 통해 문자열로 반환받아 사용할 수 있습니다
        self.result_label.setText(result)

app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())

좀 더 깔끔한 UI를 위해 Layout을 사용했는데, Layout에 대해서는 따로 다룰 예정입니다.

widget을 통해 텍스트 입력
widget을 통해 텍스트를 저장 가능

위젯을 이용하면 텍스트를 저장할 수 있습니다. 저장된 텍스트를 사용하기 위해서는 위젯에 내장된 text 메서드를 통해 문자열로 반환받아야 합니다.

 


다른 위젯에 대해서도 계속 공부할 예정인데, 모든 위젯들이 다양한 메서드를 갖고 있어 상황에 따라 적절하게 사용할 수 있습니다. 기능들을 하나하나 외우기보다는 필요한 기능이 있을 때 관련 문서나 위젯이 정의된 class를 활용해 적절하게 사용하는 것이 좋습니다.

'카테고리 없음'의 다른글

  • 현재글 [PyQt] 텍스트 입력받기(QLineEdit, QTextEdit)