본문 바로가기
PYQT/Project

1. [파이썬 GUI] LineEdit을 이용하여 TextEdit에 출력하기.

by kgoing 2022. 8. 8.


 

 

안녕하세요, kgoing입니다. 오늘은 지난 시간에 이어 Pyqt로 LineEdit을 이용하여 TextEdit에 출력하는 연습을 해보겠습니다.

 

py파일화면
.py파일열기

(지난시간 글.4. [Pyqt5, QT Designer] LineEdit, TextEdit, Label 만들기 )

먼저 사용하고 있는 IDE로 지난 시간에. ui파일을. py 파일로 만든 파일을 열어봅니다.(저는 Sublime Text라는 IDE를 사용 중에 있습니다. 설명은 Sublime Text로 설명을 드리겠으며 아무 IDE나 사용하셔도 됩니다.)

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(460, 378)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(150, 270, 171, 23))
        self.pushButton.setObjectName("pushButton")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(150, 220, 171, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(150, 60, 171, 131))
        self.textEdit.setObjectName("textEdit")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(150, 40, 56, 12))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(150, 200, 56, 12))
        self.label_2.setObjectName("label_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 460, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.pushButton.clicked.connect(MainWindow.start) # type: ignore
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "출력"))
        self.label.setText(_translate("MainWindow", "출력창"))
        self.label_2.setText(_translate("MainWindow", "입력창"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

 

1. 이런 파일이 열립니다.

 

 

새로운창-만들기화면
새로운창 만들기

 

2. 새로운 창을 하나 만들고. py파일로 같은 폴더에 저장합니다.

저는 print_test.py 파일로 저장하였습니다.

 

import sys
from '''@@@''' import Ui_MainWindow #(1).수정
from PyQt5 import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class print_test(QMainWindow, Ui_MainWindow):  #클래스 네임 아무거나
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        '''@@'''(1).추가

    def start(self):
        pass #(2).수정

app = QApplication([])
main_dialog = print_test()  #클레스 네임과 동일하게
QApplication.processEvents()
sys.exit(app.exec_())

3. print_test.py 창에 다음과 같은 코드를 붙여 넣기 해 줍니다.

이 코드는 앞으로 우리가 사용할 기본 base 코드라고 생각하시면 됩니다.

 

4. 이제 다 왔습니다. 다음과 같이 변경해 주세요.

1). (1) 수정 '''@@@''' 부분을 삭제하시고 test.py로 적습니다.

설명 :  우리는. ui 파일을. py 파일로 변경하였고 이때 test.py 파일로 저장하였습니다.

이 파일을 불러오는 겁니다.

 

2). (1). 추가 부분에 '''@@''' 부분을 삭제하시고 

self.pushButton.clicked.connect(self.start)라고 적습니다.

 

설명 : 우리가 사용하려고 만든 출력 버튼과 연결해 주는 함수입니다. 여기서(self.start)는 Pyqt에서 버튼을 연결 해준 그라운드의 값입니다.

 

3). (2). 수정 pass를 삭제하시고 

       text = self.lineEdit.text()
       self.textEdit.setText(text)

라고 적습니다. 

설명: text와 우리가 만든 lineEdit.text 는 같다 라는 함수

textEdit에 setText 하겠다 무엇을?(text)를 

setText 함수는 값을 가져오는 함수라고 이해하시면 될 거 같습니다.

 

5. 이렇게 완성된 코드를 보면 다음과 같습니다.

import sys
from test import Ui_MainWindow #수정
from PyQt5 import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class print_test(QMainWindow, Ui_MainWindow):  #클래스 네임 아무거나
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pushButton.clicked.connect(self.start)

    def start(self):
        text = self.lineEdit.text()
        self.textEdit.setText(text)

app = QApplication([])
main_dialog = print_test()  #클레스 네임과 동일하게
QApplication.processEvents()
sys.exit(app.exec_())

 

6. 실행 화면입니다. 

 

코드실행화면
실행화면

 

입력창에 감사합니다.라고 적고 출력 버튼을 누려면 출력 창에 같은 문구가 출력됩니다.

 

 

 

감사합니다.

댓글