2016-10-02 2 views
1

나는 2 개의 창 testWidget과 win2를 생성한다. 먼저 testWidget에서 시작 메뉴의 "입력 데이터 입력"을 클릭 한 다음 win2의 LineEdit LineEdit에 숫자를 입력하고 "Analyze"를 눌러 testWidget에 표시합니다. 내가 해냈지만 testWidget이 다시 나타납니다. 그것을 해결하는 방법?PyQt - 창 사이의 변수 번호 전달

감사합니다.

import sys 
from PyQt4 import QtGui,QtCore 

class testWidget(QtGui.QMainWindow): 

    def __init__(self): 

     super(testWidget, self).__init__() 

     self.setGeometry(25,150,1200,700) 
     self.setWindowTitle('test') 

     extractAction_1 = QtGui.QAction('&Input maesure data',self) 
     extractAction_1.triggered.connect(self.newWindow) 

     self.linetest = QtGui.QLineEdit() 
     self.linetest.setText("0.0")  

     layoutV = QtGui.QVBoxLayout() 

     layoutV.addWidget(self.linetest) 
     widget = QtGui.QWidget() 
     widget.setLayout(layoutV) 
     self.setCentralWidget(widget) 


     mainMenu = self.menuBar() 
     fileMenu = mainMenu.addMenu('&Start') 
     fileMenu.addAction(extractAction_1) 

    def newWindow(self): 

     self.myOtherWindow = win2() 
     self.myOtherWindow.show() 

    def showtex(self,text_LT): 

     self.linetest.clear() 
     self.linetest.setText(text_LT) 

class win2(QtGui.QMainWindow): 

    def __init__(self): 

     QtGui.QMainWindow.__init__(self) 

     self.setWindowTitle("Set parameters") 
     self.setGeometry(150,300,300,200)  


     b2 = QtGui.QPushButton("Analyze") 
     b2.clicked.connect(self.getre) 

     layoutV = QtGui.QVBoxLayout() 
     layoutH = QtGui.QHBoxLayout() 

     lab1 = QtGui.QLabel("L1(m):") 
     self.line1 = QtGui.QLineEdit() 
     self.line1.setText("50") 

     lab2 = QtGui.QLabel("L2(m):") 
     self.line2 = QtGui.QLineEdit() 
     self.line2.setText("0.0") 

     self.line3test = QtGui.QLineEdit() 


     layoutH.addWidget(lab1) 
     layoutH.addWidget(self.line1) 

     layoutH.addWidget(lab2) 
     layoutH.addWidget(self.line2) 
     layoutV.addLayout(layoutH) 

     layoutV.addWidget(b2) 
     layoutV.addWidget(self.line3test) 

     self.widget = QtGui.QWidget() 
     self.widget.setLayout(layoutH) 
     self.widget.setLayout(layoutV) 

     self.setCentralWidget(self.widget) 

     self.winma=testWidget() 


    def getre(self): 

     text_LT = self.line1.text() 


     self.winma.showtex(text_LT) 
     self.winma.show() 

if __name__ == '__main__': 

    app = QtGui.QApplication(sys.argv) 
    GUI = testWidget() 
    GUI.show() 
    app.exec_() 

답변

1

acessing을 위해 전역 변수를 설정해야합니다.

GUI = None 
if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    GUI = testWidget() 
    GUI.show() 
    app.exec_() 

그리고 서브 윈 도우 값을 GUI로 전달하십시오.

def getre(self): 
    text_LT = self.line1.text() 
    GUI.linetest.setText(text_LT) 
+0

좋아요! 감사합니다! 그게 내가 원하는거야. – radiosan