티스토리 뷰

 

전에 알아본 인풋창을 중류별로 만들어봅니다. 코드가 깁니다..

 

 

 

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

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

    def initUI(self):
        # echo_group
        self.echo_group = QGroupBox('가입')
        self.echo_label = QLabel('모드')
        self.echo_cb = QComboBox()
        self.echo_cb.addItem('Normal')
        self.echo_cb.addItem('No Join')
        self.echo_cb.addItem('Password')
        self.echo_cb.addItem('Password Edit')
        self.echo_le = QLineEdit()
        self.echo_le.setPlaceholderText('초기 텍스트')
        self.echo_le.setFocus()

        # validaor_group
        self.validator_group = QGroupBox('검증')
        self.validator_label = QLabel('타입')
        self.validator_cb = QComboBox()
        self.validator_cb.addItem('선택하지 않음')
        self.validator_cb.addItem('정수 검사기')
        self.validator_cb.addItem('소수 검사')
        self.validator_le = QLineEdit()
        self.validator_le.setPlaceholderText('초기 텍스트')

        # alignment_group
        self.alignment_group = QGroupBox('정렬')
        self.alignment_label = QLabel('타입')
        self.alignment_cb = QComboBox()
        self.alignment_cb.addItem('왼쪽')
        self.alignment_cb.addItem('가운데')
        self.alignment_cb.addItem('오른쪽')
        self.alignment_le = QLineEdit()
        self.alignment_le.setPlaceholderText('초기 텍스트')

        # input_mask_group
        self.input_mask_group = QGroupBox('입력 마스크')
        self.input_mask_label = QLabel('타입')
        self.input_mask_cb = QComboBox()
        self.input_mask_cb.addItem('마스크 없음')
        self.input_mask_cb.addItem('전화번호')
        self.input_mask_cb.addItem('ISO 데이터')
        self.input_mask_cb.addItem('라이센스 키')
        self.input_mask_le = QLineEdit()
        self.input_mask_le.setPlaceholderText('초기 텍스트')

        # access_group
        self.access_group = QGroupBox('접근')
        self.access_label = QLabel('타입')
        self.access_cb = QComboBox()
        self.access_cb.addItem('False')
        self.access_cb.addItem('True')
        self.access_le = QLineEdit()
        self.access_le.setPlaceholderText('초기 텍스트')

        # actived connect
        self.echo_cb.activated.connect(self.echo_changed)
        self.validator_cb.activated.connect(self.validator_changed)
        self.alignment_cb.activated.connect(self.alignment_changed)
        self.input_mask_cb.activated.connect(self.input_mask_changed)
        self.access_cb.activated.connect(self.access_changed)

        # echo_layout
        self.echo_layout = QGridLayout()
        self.echo_layout.addWidget(self.echo_label, 0, 0)
        self.echo_layout.addWidget(self.echo_cb, 0, 1)
        self.echo_layout.addWidget(self.echo_le, 1, 0, 1, 2)
        self.echo_group.setLayout(self.echo_layout)

        #  validator_layout
        self.validator_layout = QGridLayout()
        self.validator_layout.addWidget(self.validator_label, 0, 0)
        self.validator_layout.addWidget(self.validator_cb, 0, 1)
        self.validator_layout.addWidget(self.validator_le, 1, 0, 1, 2)
        self.validator_group.setLayout(self.validator_layout)

        # alignment_layout
        self.alignment_layout = QGridLayout()
        self.alignment_layout.addWidget(self.alignment_label, 0, 0)
        self.alignment_layout.addWidget(self.alignment_cb, 0, 1)
        self.alignment_layout.addWidget(self.alignment_le, 1, 0, 1, 2)
        self.alignment_group.setLayout(self.alignment_layout)

        # input_mask_layout
        self.input_mask_layout = QGridLayout()
        self.input_mask_layout.addWidget(self.input_mask_label, 0, 0)
        self.input_mask_layout.addWidget(self.input_mask_cb, 0, 1)
        self.input_mask_layout.addWidget(self.input_mask_le, 1, 0, 1, 2)
        self.input_mask_group.setLayout(self.input_mask_layout)

        # access_layout
        self.access_layout = QGridLayout()
        self.access_layout.addWidget(self.access_label, 0, 0)
        self.access_layout.addWidget(self.access_cb, 0, 1)
        self.access_layout.addWidget(self.access_le, 1, 0, 1, 2)
        self.access_group.setLayout(self.access_layout)

        # layout
        self.layout = QGridLayout()
        self.layout.addWidget(self.echo_group, 0, 0)
        self.layout.addWidget(self.validator_group, 1, 0)
        self.layout.addWidget(self.alignment_group, 2, 0)
        self.layout.addWidget(self.input_mask_group, 0, 1)
        self.layout.addWidget(self.access_group, 1, 1)

        self.setLayout(self.layout)

        self.setWindowTitle('통합')
        self.show()

    def echo_changed(self, index):
        if index == 0:
            self.echo_le.setEchoMode(QLineEdit.Normal)
        elif index == 1:
            self.echo_le.setEchoMode(QLineEdit.NoEcho)
        elif index == 2:
            self.echo_le.setEchoMode(QLineEdit.Password)
        elif index == 3:
            self.echo_le.setEchoMode(QLineEdit.PasswordEchoOnEdit)

    def validator_changed(self, index):
        if index == 0:
            self.validator_le.setValidator(None)
        elif index == 1:
            self.validator_le.setValidator(QIntValidator(-99, 99))
        elif index == 2:
            double_validator = QDoubleValidator(-999.0, 999.0, 2)
            double_validator.setNotation(QDoubleValidator.StandardNotation)
            self.validator_le.setValidator(double_validator)

        self.validator_le.clear()

    def alignment_changed(self,index):
        if index == 0:
            self.alignment_le.setAlignment(Qt.AlignLeft)
        elif index == 1:
            self.alignment_le.setAlignment(Qt.AlignCenter)
        elif index == 2:
            self.alignment_le.setAlignment(Qt.AlignRight)

    def input_mask_changed(self, index):
        if index == 0:
            self.input_mask_le.setInputMask('')
        elif index == 1:
            self.input_mask_le.setInputMask('000-0000-0000')
        elif index == 2:
            self.input_mask_le.setInputMask('0000-00-00')
            self.input_mask_le.setText('20200212')
            self.input_mask_le.setCursorPosition(0)
        elif index == 3:
            self.input_mask_le.setInputMask('>AAAAA-AAAAA-AAAAA-AAAAA;#')

    def access_changed(self, index):
        if index == 0:
            self.access_le.setReadOnly(False)
        elif index == 1:
            self.access_le.setReadOnly(True)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ax = lineeditEdit()
    sys.exit(app.exec_())

 

코드가 길긴 하지만 각 라이에디터별로 그리드와 함수가 적용되어서 그렇습니다. 찬찬히 뜯어보면 그리 어렵진 않지만 오타에 주의해야 합니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함