안녕하세요, kgoing입니다. 오늘은 지난 시간에 이어 Pyqt로 LineEdit을 이용하여 TextEdit에 출력하는 연습을 해보겠습니다.
(지난시간 글.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. 실행 화면입니다.
입력창에 감사합니다.라고 적고 출력 버튼을 누려면 출력 창에 같은 문구가 출력됩니다.
감사합니다.
댓글