일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- html
- 파이썬GUI
- 깃
- windows
- Windows11
- Windows10
- 오피스
- 윈도우11
- 파이썬
- 파이썬3
- pyqt5
- 엑셀
- win32com
- 아웃룩
- 윈도우10
- Excel
- pandas
- 비주얼베이직
- 파워포인트
- git
- 문자열
- pythongui
- office
- python3
- VBA
- Android
- python
- Outlook
- 안드로이드
- matlab
Appia의 IT세상
파이썬[Python GUI, PyQt5 Tutorial 013] 한줄 입력 공간 라인에디트(QLineEdit)만들기 - 비밀번호 입력 칸 만들기 본문
파이썬[Python GUI, PyQt5 Tutorial 013] 한줄 입력 공간 라인에디트(QLineEdit)만들기 - 비밀번호 입력 칸 만들기
Appia 2020. 6. 27. 07:01파이썬[Python GUI, PyQt5 Tutorial 013] 한줄 입력 공간 라인에디트(QLineEdit)만들기 - 비밀번호 입력 칸 만들기
이번 포스팅에서는 주로 라인 에디터 부분을 다루어 볼까 합니다. 라인에디터는 흔히 비밀 번호 입력 또는 비밀 번호 생성시에 한줄에 텍스트를 입력할 수 있는 공간입니다. 다음 그림과 같은 부분이라고 볼 수 있습니다.
그럼 관련해서 먼저 간단히 라인에디터(QLineEdit)를 생성하고, 관련해서 텍스트를 입력할 경우 이 부분이 라벨(QLabel)표시 되게 GUI를 구성하여 동작하도록 코딩을 해보도록 하겠습니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel,QGridLayout, QLineEdit
class QtGUI(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Appia Qt GUI")
self.resize(300, 300)
self.intialL1 = 'First Job'
self.intialL2 = 'Second Job'
Layout = QGridLayout()
self.setLayout(Layout)
labelobj1 = QLabel(self.intialL1,self)
Layout.addWidget(labelobj1,0,0)
labelobj2 = QLabel(self.intialL2, self)
Layout.addWidget(labelobj2, 1, 0)
lineedit1 = QLineEdit(self)
Layout.addWidget(lineedit1,0,1)
lineedit1.textChanged.connect(lambda:self.print_label(lineedit1,labelobj1))
lineedit2 = QLineEdit(self)
lineedit2.setEchoMode(2)
Layout.addWidget(lineedit2, 1, 1)
lineedit2.textChanged.connect(lambda: self.print_label(lineedit2, labelobj2))
self.show()
def print_label(self,lineedit,label):
label.setText(lineedit.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = QtGUI()
app.exec_()
|
cs |
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
그럼 위의 코드에서 한 부분씩 살펴보도록 하겠습니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel,QGridLayout, QLineEdit
|
cs |
앞선 포스팅에서도 이 부분은 가장 많이 사용했습니다. 여기에서는 QLineEdit라는 부분을 호출 하여 사용하기 때문에 관련된 부분을 추가하였습니다. 그리고 그외에 필요로 하는 클래스들을 import 하도록 하기 위함입니다.
lineedit1 = QLineEdit(self)
#이 부분은 한줄 짜리 입력 공간인 QLineEdit()를 생성합니다.
Layout.addWidget(lineedit1,0,1)
#그리드 Widget을 활용하여 QLineEdit()을 위치 시킵니다.
lineedit1.textChanged.connect(lambda:self.print_label(lineedit1,labelobj1))
#linedit1에 텍스트가 입력되면 동작이 될 이벤트를 연결해줍니다.
lineedit2 = QLineEdit(self)
lineedit2.setEchoMode(2)
#setEchoMode를 통해서 비밀번호같이 외부에 텍스트를 노출시키지 않습니다.
Layout.addWidget(lineedit2, 1, 1)
lineedit2.textChanged.connect(lambda: self.print_label(lineedit2, labelobj2))
|
cs |
위에 코드에 간단히 각각에 하는 역할에 대해서 명시를 했습니다. 여기에서 SetEchoMode의 경우 텍스트를 표현하는 방식을 의미합니다.
텍스트 | Enum 값 | 설명 |
QLineEdit.Normal | 0 | 입력된 문자 표시(Default) |
QLineEdit.NoEcho | 1 | 아무 표시 하지 않음. |
QLineEdit.Password | 2 | 비밀번호 입력용 비노출 문자로 표시 |
QLineEdit.PasswordEchoOnEdit | 3 | 입력할 때 문자를 표시하고, 입력 이후 비밀번호 입력용 비노출 문자로 표시 |
def print_label(self,lineedit,label):
label.setText(lineedit.text())
|
cs |
그리고 다음 함수를 통해서 QLineEdit에 글자가 입력될 경우, 라벨에 바로바로 표시하게 해줍니다.
관련해서 자주 사용되는 이벤트는 다음과 같습니다.
event | 설명 |
editingFinished | (Enter)키가 눌러졌을때 |
returnPressed | |
textChanged | 텍스트가 변경되거나, 수정될 때 이벤트가 동작됩니다. 위에 2 신호는 크게 유사합니다. |
textEdited |
위와 같은 이벤트를 다음 코드 부분에 적용해서 사용하시면 됩니다.
lineedit1.textChanged.connect(lambda:self.print_label(lineedit1,labelobj1))
|
cs |
위에 보이는 textChanged 대신 상기 언급해드린 이벤트를 적용하시면 원하시는 이벤트 효과를 확인하실 수 있습니다. 위에 코드 부분을 참조하시고, 혹시 제 코드를 그대로 가져다 쓰시고 싶으신 분이 있으시면 다음 파일을 참조하시길 바랍니다.
이번 포스팅에서는 파이썬[Python GUI, PyQt5 Tutorial 013] 한줄 입력 공간 라인에디트(QLinEdit)만들기 - 비밀번호 입력 칸 만들기라는 주제로 포스팅을 진행해봤습니다. 이 부분과 몇가지 부분을 결합해서 ToDo리스트를 만들어 보는 것도 매우 재미 있는 것 같습니다.
혹시 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.