[ 파이썬GUI-PySide6 ] 텍스트 입력하기-QLineEdit
들어가며
PySide6에서 한 줄의 텍스트를 입력할 수 있게 하려면
QLineEdit를 사용하면 됩니다.
QLineEdit는 사용자가 텍스트를 입력할 수 있는 기본적인 UI 요소입니다.
아이디나 비밀번호를 입력받아 처리하거나
숫자를 입력받아 처리하는 것과 같은 기능에서
기본적인 입력을 받는 기능을 합니다.
QLineEdit 간단한 텍스트 입력 박스
QLineEdit를 사용해 하나의 텍스트 입력 박스를 만들면
다음과 같이 나타납니다.
아래는 단순히 모양을 신경 쓰지 않고 단순히 텍스트 입력박스 하나를 추가한 것입니다.
코드는 다음과 같습니다.
from PySide6.QtWidgets import QApplication, QWidget, QLineEdit
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setupUi()
def setupUi(self):
self.setWindowTitle("My Widget")
self.resize(300, 200)
self.line_edit = QLineEdit(self)
self.line_edit.setPlaceholderText("여기에 텍스트를 입력하세요")
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec()
지난 블로그에서 QWidget를 사용해 Widget 창을 띄우는 방법을 설명했으니
그 부분은 제외하고 설명하겠습니다.
Widget 창을 띄우는 방법은 아래 링크를 참고하시면 됩니다.
※ [ Pyside6 ] 첫 번째 GUI 애플리케이션 만들기-위젯과 윈도우
QLineEdit를 사용해 텍스트 입력 박스를 만들고
setPlaceholderText 함수를 사용해 안내 문구를 만들어 줍니다.
self.line_edit = QLineEdit(self)
self.line_edit.setPlaceholderText("여기에 텍스트를 입력하세요")
기본 텍스트 설정하기
경우에 따라서는 기본 텍스트가 입력이 된 상태로 있는 게 편할 때도 있습니다.
자주 사용하는 텍스트는 기본 설정으로 해놓고
그 외의 텍스트가 필요할 때 입력하게 할 수도 있습니다.
이런 경우 setText() 함수를 사용합니다.
self.line_edit = QLineEdit(self)
self.line_edit.setText("안녕하세요.!")
읽기 전용으로 만들기
텍스트 입력 박스를 읽기 전용으로 하는 것이 좋을 때도 있습니다.
읽기 전용으로 만들면 텍스트 박스에 표시는 되지만,
사용자가 직접 편집을 할 수는 없습니다.
예를 들어 파일 경로를 불러와 표시할 때
읽기 전용으로 불러와 직접 편집이 불가능하게 만드는 것이 좋습니다.
self.line_edit = QLineEdit(self)
self.line_edit.setText(r"C:\Users\karur\Desktop\게임")
self.line_edit.setReadOnly(True)
위와 같이 설정하면 텍스트 박스의 텍스트를 직접 편집할 수는 없지만,
선택하여 복사하기는 가능합니다.
입력된 값 불러오기
텍스트 박스에 입력된 값을 불러오기 위해서는
text()를 사용합니다.
아래 코드는 텍스트 박스에 값을 입력한 다음
Enter를 누르면 터미널에 텍스트 박스에 입력된 값을 출력하는 코드입니다.
from PySide6.QtWidgets import QApplication, QWidget, QLineEdit
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setupUi()
def setupUi(self):
self.setWindowTitle("My Widget")
self.resize(300, 200)
self.line_edit = QLineEdit(self)
self.line_edit.returnPressed.connect(self.text_changed)
def text_changed(self):
text = self.line_edit.text()
print(text)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec()
텍스트 박스의 입력 값 정렬하기
기본적으로 텍스트 박스는 좌측 정렬이 되어 있습니다.
텍스트를 정렬하는 방법은 크게 수평 정렬과 수직 정렬로 나뉘고
수평정렬은 왼쪽 / 오른쪽 / 가운데 정렬
수직정렬은 위쪽 / 아래쪽 / 가운데 정렬
이렇게 구분됩니다.
정렬 기능을 사용하기 위해서는 먼저 qt 모듈을 임포트 해줘야 합니다.
from PySide6.QtCore import Qt
정렬 방법은 아래와 같습니다.
# 수평 정렬
line_edit.setAlignment(Qt.AlignLeft) # 왼쪽
line_edit.setAlignment(Qt.AlignRight) # 오른쪽
line_edit.setAlignment(Qt.AlignCenter) # 가운데
# 수직 정렬 (높이가 클 때)
line_edit.setAlignment(Qt.AlignTop) # 위쪽
line_edit.setAlignment(Qt.AlignBottom) # 아래쪽
line_edit.setAlignment(Qt.AlignVCenter) # 세로 가운데
# 조합 사용
line_edit.setAlignment(Qt.AlignRight | Qt.AlignVCenter) # 오른쪽 + 세로 가운데
기본적으로 수평 방향은 왼쪽 정렬
수직 방향은 가운데 정렬입니다.
아래는 텍스트 박스에 값이 입력되었을 때 우측으로 정렬되게 만든 코드입니다.
from PySide6.QtWidgets import QApplication, QWidget, QLineEdit
from PySide6.QtCore import Qt
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setupUi()
def setupUi(self):
self.setWindowTitle("My Widget")
self.resize(300, 200)
self.line_edit = QLineEdit(self)
self.line_edit.setAlignment(Qt.AlignRight)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec()
마치며
이 이외에도 LineEdit 위젯의 기능은 더욱 다양합니다.
패스워드와 관련된 기능
글자수 입력 제한 기능등 여러 가지 기능들이 있습니다.
이러한 기능들은 앞으로 차차 하나씩 작성해 보도록 하겠습니다.
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.