본문 바로가기
Python/PyQt

[Python] PyQt5 메인윈도우에서 두 번째 창 값 가져오기/python GUI(6)

by 고체물리학 2021. 10. 14.

 

2021.10.12 - [Python/PyQt] - [Python] PyQt5 두 번째 창 열기(새창 열기)/python GUI(5)

 

이전 포스팅에서는 메인 윈도우에서 두 번째 창을 여는 코드를 작성했다

이번에는 두 번째창의 값을 메인 윈도우로 전달하는 코드를 추가한다

 

1. secondwindow.py의 Home함수를 수정한다

 

두 번째 창에 있는 Line Edit에 텍스트를 입력하고 Home버튼을 누르면 메인윈도우로 값을 전달

    def Home(self):
        self.second_text = self.lineEdit.text() #lineEdit에 있는 값을 가져와서 second_text에 저장
        self.close()

 

second_text를 선언한 뒤 lineEdit값을 저장한다

 

2. Main Window button_Second함수 수정

    def button_Second(self):
        self.close()#hide main window
        self.second = secondwindow()
        self.second.exec() # will wait till you close second window
        self.textEdit.setText(self.second.second_text) #Main window의 입력 값 text Edit에 두 번째창 변수 second_text값을 전달
        self.show()

 

메인윈도우에서 값을 가져와서 출력하는 코드를 추가한다

3. MainWindow 전체 코드

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5 import QtCore
from secondwindow import secondwindow
from img import imgwindow

form_main = uic.loadUiType("test.ui")[0] #ui 파일 불러오기

#test에 바로 실행시킬 파일명을 입력하면 됨

class MainWindow(QMainWindow,QWidget,form_main):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.show()
        self.second_text=""

    def initUI(self):
        self.setupUi(self)
        self.pushButton.clicked.connect(self.buttonClicked)  # 버튼 클릭시 연결되는 함수
        self.pushButton_2.clicked.connect(self.buttonClicked_Output)  #
        self.SecondWindow.clicked.connect(self.button_Second)


    def buttonClicked(self):  # pushButton 클릭되었을때 text상자에 출력해주는 소스
        # self.textEdit.setText("버튼누름") #한번만
        self.textEdit.append("버튼누름")  # 여러번
        # self.textEdit.insertPlainText("버튼누름") #띄어쓰기X

    def buttonClicked_Output(self):
        self.text = self.textEdit.toPlainText()
        self.output_text.setText(self.text)

    def button_Second(self):
        self.close()#hide main window
        self.second = secondwindow()
        self.second.exec() 
        self.textEdit.setText(self.second.second_text)
        self.show()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MainWindow()
    sys.exit(app.exec_())

 

 

4. SecondWindow 전체 코드

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5 import QtCore

form_secondwindow = uic.loadUiType("secondwindow.ui")[0]

class secondwindow(QDialog,QWidget,form_secondwindow):
    def __init__(self):
        super(secondwindow,self).__init__()
        self.initUI()
        self.show()
        self.second_text =""
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)

    def initUI(self):
        self.setupUi(self)
        self.home.clicked.connect(self.Home)
        self.ok_button.clicked.connect(self.ok)

    def Home(self):
        self.second_text = self.lineEdit.text()
        self.close()

 

5. 실행화면

https://youtu.be/RfsX046DPDw

 

반응형

댓글