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에 대해서는 따로 다룰 예정입니다.
위젯을 이용하면 텍스트를 저장할 수 있습니다. 저장된 텍스트를 사용하기 위해서는 위젯에 내장된 text 메서드를 통해 문자열로 반환받아야 합니다.
다른 위젯에 대해서도 계속 공부할 예정인데, 모든 위젯들이 다양한 메서드를 갖고 있어 상황에 따라 적절하게 사용할 수 있습니다. 기능들을 하나하나 외우기보다는 필요한 기능이 있을 때 관련 문서나 위젯이 정의된 class를 활용해 적절하게 사용하는 것이 좋습니다.