티스토리 뷰

이 글은 Codetorial의 PyQt5, 초보자를 위한 Python GUI 프로그래밍-PyQt5 등을 학습하는 과정을 기록한 것이다. 강좌 자체는 해당 사이트를 참고하기 바란다.

2019/12/07 - [Python/PyQt5] - PyQt5: 여러 위젯 사용하기 2-2(시그널과 슬롯 연결 편)

 

PyQt5: 여러 위젯 사용하기 2-2(시그널과 슬롯 연결 편)

이 글은 Codetorial의 PyQt5, 초보자를 위한 Python GUI 프로그래밍-PyQt5 등을 학습하는 과정을 기록한 것이다. 강좌 자체는 해당 사이트를 참고하기 바란다. 2019/12/03 - [Python/PyQt5] - PyQt5: 여러 위젯 사..

editor752.tistory.com

 

2019/12/07 - [Python/PyQt5] - PyQt5: 여러 위젯 사용하기 2-3(QtDesigner 편)

 

PyQt5: 여러 위젯 사용하기 2-3(QtDesigner 편)

이 글은 Codetorial의 PyQt5, 초보자를 위한 Python GUI 프로그래밍-PyQt5 등을 학습하는 과정을 기록한 것이다. 강좌 자체는 해당 사이트를 참고하기 바란다. 2019/12/03 - [Python/PyQt5] - PyQt5: 여러 위젯 사..

editor752.tistory.com

 

 

PyQt5: 여러 위젯 사용하기 2-3(QtDesigner 편)

이전 포스팅에서 완성했던 코드를 이번에는 QtDesigner를 이용해서 다시 작성해 보도록 한다. QtDesigner를 사용하게 되면 디자인 코드가 보이지 않아 시그널과 슬롯 코드에 집중할 수 있는 장점이 드러난다. 다시 작성된 전체 코드는 아래와 같다.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5.QtGui import *
from PyQt5.QtCore import *
 
form_class = uic.loadUiType('QLineEdit04.ui')[0]
 
class MyWindow(QWidget, form_class):
 
    def __init__(self):
 
        super().__init__()
        self.setupUi(self)
 
        # 연결된 시그널과 슬롯: Echo 묶음
        self.echo_cb.activated.connect(self.echo_changed)
        # 연결된 시그널과 슬롯: validator 묶음
        self.validator_cb.activated.connect(self.validator_changed)
        # 연결된 시그널과 슬롯: alignment 묶음
        self.alignment_cb.activated.connect(self.alignment_changed)
        # 연결된 시그널과 슬롯: input_mask 묶음
        self.input_mask_cb.activated.connect(self.input_mask_changed)
        # 연결된 시그널과 슬롯: access_cb 묶음
        self.access_cb.activated.connect(self.access_changed)
 
    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(-9999))
        elif index == 2:
            double_validator = QDoubleValidator(-999.0999.02)
            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('20190410')
            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)
    ex = MyWindow()
    ex.show()
    sys.exit(app.exec_())
 
cs

이전 코드와 비교해 보면 코드가 훨씬 간단명료해 진 것을 확인할 수 있다.

이 코드와 연결된 디자인 파일은 아래에 첨부하였다.

QLineEdit04.ui
6.4 kB


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함
05-15 06:21