Appia의 IT세상

파이썬[Python GUI, PyQt5 Tutorial 019] 글자수 세기 프로그램(QText) -공백 포함, 공백 미포함 본문

Python/Python PyQt5 (GUI)

파이썬[Python GUI, PyQt5 Tutorial 019] 글자수 세기 프로그램(QText) -공백 포함, 공백 미포함

Appia 2020. 7. 6. 07:19
반응형

파이썬[Python GUI, PyQt5 Tutorial 019)] 글자수 세기 프로그램(QText) -

공백 포함, 공백 미포함

 

이번 포스팅은 앞서서 포스팅했던 내용들을 응용하여 글자수를 세워주는 프로그램을 짜보고자 합니다. 이전에는 파일로 저장된 부분을 바탕으로 작업을 했는데, 이번에는 GUI상에서 직접 입력한 수에 대해서 공백을 포함하는 글자수, 공백을 포함하지 않는 글자수에 대해서 확인 및 설정해보도록 하겠습니다. 

 

GUI 구조 예상도 

먼저 PyQt5로 작업을 시작하기에 앞서서, 실제 생성이 될 GUI에 대해서 어떻형태로 구성할것인지에 대해서 구조해 해봤습니다. 이런 부분을 바탕으로 코딩을 진행할 예정입니다. 그럼 전체 코드를 한번 살펴보겠습니다. 

import sys
 
from PyQt5.QtWidgets import QApplication,QLabel, QWidget, QTextEdit, QVBoxLayout,QHBoxLayout
 
 
class QtGUI(QWidget):
 
 
    def __init__(self):
 
        super().__init__()
 
        self.text = QTextEdit()
        
        self.text.setAcceptRichText(True)
        
        self.teLabelfix = QLabel("글자 수 : ",self)
        
        self.teLabel = QLabel(self)
 
 
        vbox = QVBoxLayout()
        
        vLine = QHBoxLayout()
        
        vLine.addWidget(self.teLabelfix)
        
        vLine.addWidget(self.teLabel)
        
        vbox.addLayout(vLine)
        
        vbox.addWidget(self.text)
        
        vbox.addStretch()
 
        self.setLayout(vbox)
 
        self.text.textChanged.connect(self.text_changed)
        
        self.setWindowTitle('QTextEdit')
        
        self.setGeometry(300300300200)
        
        self.show()
 
 
    def text_changed(self):
    
        value = self.text.toPlainText()
        
        value1 = value.replace(" ","")
        
        self.teLabel.setText('공백포함 :'+str(len(value))+'\t'+'공백미포함 :'+str(len(value1)))
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
 
    ex = QtGUI()
 
    app.exec_()
cs

 

위와 코드를 실행하면 다음과 같은 결과가 나타납니다. 

실행된 GUI 모습

위와 같이 구성이 되었습니다. 각 코드 부분에 대해서 간단히 살펴보겠습니다. GUI에 사용될 위젯들에 대해서 간단히 설명하도록 하겠습니다. 

        self.text = QTextEdit()
        
        self.text.setAcceptRichText(True)
        
        self.teLabelfix = QLabel("글자 수 : ",self)
        
        self.teLabel = QLabel(self)
 
 
        vbox = QVBoxLayout()
        
        vLine = QHBoxLayout()
        
        vLine.addWidget(self.teLabelfix)
        
        vLine.addWidget(self.teLabel)
        
        vbox.addLayout(vLine)
        
        vbox.addWidget(self.text)
        
        vbox.addStretch()
 
        self.setLayout(vbox)
cs

 

일단 위에 예상도와 비슷하게 총 3개의 위젯을 불러옵니다. QText - 1개, QLabel - 2개 입니다. 여기에서 변수명 text의 경우, 입력된 글자가 변경이 될때, 글자수가 QLabel중 self.teLabel에 명시가 되어야 합니다. 그리고 self.teLabelfix의 경우 미리 사전에 고정된 "글자 수 :"라는 부분이 명시가 됩니다. 

 

그리고 BoxLayout을 사용이 됩니다. 먼저, QHBoxLayout을 통해서 QLabel을 각각 명시합니다. 그런 후에 QVBoxLayout에 먼저 QLabel을 명시된 부분을 붙이고 나서, Text를 입력되게 합니다. 

 

그럼 이번에는 이벤트 처리 부분에 대해서 살펴보겠습니다. 

class QtGUI(QWidget):
 
    def __init__(self):
    
        .... 중략....
        
        self.text.textChanged.connect(self.text_changed)
    
        self.setWindowTitle('QTextEdit')
        
        self.setGeometry(300300300200)
        
        self.show()
 
 
    def text_changed(self):
    
        value = self.text.toPlainText()
        
        value1 = value.replace(" ","")
        
        self.teLabel.setText('공백포함 :'+str(len(value))+'\t'+'공백미포함 :'+str(len(value1)))
cs

 먼저, Qtext의 데이터를 value라는 별도의 변수에 저장합니다. 그리고 value전체를 len()함수의 인자로 사용하면 QText에 입력된 공백이 포함된 글자수가 모든 세워집니다. 만약에 value에서 공백을 없애고 나서 len()을 통해서 글자 수를 세면, 공백 미포함된 글자수를 구성할 수 있습니다. 

 

실행하면을 보면 간단히 다음과 같은 모습입니다. 

전체 코드를 일단 첨부 드리겠습니다. 

 

QT_Tutorial_019.py
0.00MB

 

이번 포스팅에서는 파이썬[Python GUI, PyQt5 Tutorial 019)] 글자수 세기 프로그램(QText) -공백 포함, 공백 미포함 라는 주제로 포스팅을 해봤습니다. 블로그를 하거나 그럴 때 가장 많이 사용되는 부분임으로 잘 활용하시길 바랍니다. 혹시 궁금하신점이나 문의사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments