Python/QT

[python QT] Button 클릭하면 TextEdit에 입력 내용을 Label에 표시

언제나휴일 2020. 11. 19. 12:00
반응형

안녕하세요. 언제나휴일입니다.

이번에는 MainWindow에 자식 위젯을 배치하는 첫 번째 실습입니다.

실습할 내용은 Button을 클릭하면 TextEdit에 입력한 내용을 Label에 표시하는 것입니다.

실행 화면

1. 소스 코드

#MainWindow.py
import PyQt5.QtWidgets as qtwid
class MainWindow(qtwid.QMainWindow):
    def __init__(self):
        super().__init__()
        self.te_query = qtwid.QTextEdit(self)
        self.btn_confirm = qtwid.QPushButton("확인",self)        
        self.lb_query = qtwid.QLabel("[입력 문자열]",self)
        self.Initialize()
    def Initialize(self):
        self.setWindowTitle("Button 클릭하면 TextEdit에 입력 내용을 Label에 표시")
        self.resize(600,180)
        self.te_query.move(20,20)
        self.te_query.resize(300,40)
        self.btn_confirm.move(340,20)
        self.btn_confirm.resize(100,40)
        self.lb_query.move(20,100)
        self.lb_query.resize(600,40)        
        self.btn_confirm.clicked.connect(self.Btn_confirmClick)
    def Btn_confirmClick(self):
        query = self.te_query.toPlainText()
        self.te_query.setText("")
        self.lb_query.setText(query)
#Button 클릭하면 TextEdit에 입력 내용을 Label에 표시 
#Main.py
import sys
import PyQt5.QtWidgets as qtwid
from MainWindow import MainWindow

app = qtwid.QApplication(sys.argv)
mw = MainWindow()
mw.show()
app.exec_()

2. MainWindow 클래스

위젯을 사용하기 위해 QtWidgets 모듈을 포함시킵니다.

#MainWindow.py
import PyQt5.QtWidgets as qtwid

MainWindow는 QMainWindow에서 파생한 클래스입니다.

class MainWindow(qtwid.QMainWindow):

2.1 __init__ 메서드

자식 위젯을 생성합니다. 여기에서는 QTextEdit, QPushButton, QLabel을 하나씩 배치할게요.

    def __init__(self):
        super().__init__()
        self.te_query = qtwid.QTextEdit(self)
        self.btn_confirm = qtwid.QPushButton("확인",self)        
        self.lb_query = qtwid.QLabel("[입력 문자열]",self)

자식 위젯의 위치 및 크기, 이벤트 핸들러 등을 설정하는 부분은 별도의 메서드로 만들게요. 이를 호출합니다.

        self.Initialize()

2.2 Initialize 메서드

윈도우 타이틀을 설정하고 크기를 조절합니다.

    def Initialize(self):
        self.setWindowTitle("Button 클릭하면 TextEdit에 입력 내용을 Label에 표시")
        self.resize(600,180)

자식 위젯의 위치 및 크기를 조절합니다.

    def Initialize(self):
        self.setWindowTitle("Button 클릭하면 TextEdit에 입력 내용을 Label에 표시")
        self.resize(600,180)
        self.te_query.move(20,20)
        self.te_query.resize(300,40)
        self.btn_confirm.move(340,20)
        self.btn_confirm.resize(100,40)
        self.lb_query.move(20,100)
        self.lb_query.resize(600,40)        

버튼의 클릭 이벤트 핸들러를 등록합니다.

        self.btn_confirm.clicked.connect(self.Btn_confirmClick)

2.2 Btn_confirmClick 메서드

입력한 내용을 얻어옵니다.

    def Btn_confirmClick(self):
        query = self.te_query.toPlainText()

te_query의 텍스트를 빈 문자열로 설정합니다.

        self.te_query.setText("")

lb_query의 텍스트를 얻어온 문자열로 설정합니다.

        self.lb_query.setText(query)

 

Main.py 코드 설명은 생략하게요.

이상으로 실습을 마쳤습니다.

반응형