2012-05-18 4 views
1

У меня проблема с связью между двумя окнами в PyQt.PyQT4 - связь между 2 окнами

главное окно = UI_Form (класс MyForm) дополнительное окно = UI_Employee (класс Employee)

Я хотел бы, когда я нажал AddTextButton (Ui_Employee), чтобы установить текст в LineTextEdit (UI_Form) Это мой код.

import sys 
from PyQt4 import QtCore, QtGui 

from Form import Ui_Form 
from Window import Ui_Employee 

class MyForm(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.ui = Ui_Form() 
     self.ui.setupUi(self) 

     QtCore.QObject.connect(self.ui.AddButton,QtCore.SIGNAL("clicked()"), self.add) 

    def add(self): 
     self.Employee = Employee(self) 
     self.Employee.show() 


class Employee(QtGui.QMainWindow): 
    def __init__(self,parent=None): 
     QtGui.QWidget.__init__(self,parent) 
     self.ui = Ui_Employee() 
     self.ui.setupUi(self) 

     QtCore.QObject.connect(self.ui.AddRowButton,QtCore.SIGNAL('clicked()'), self.addText) 

    def addText(self): 
     self.Form = MyForm() 
     self.Form.ui.textEdit.setText('someText') 

if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    myapp = MyForm() 
    myapp.show() 
    sys.exit(app.exec_()) 

У меня проблема с методом в методе addText. Первая и вторая строки игнорируются. Я не знаю, почему.

ответ

2

В вашем методе Employee.addText вы создаете новый MyForm. Это, вероятно, не то, что вы хотите. Вы можете получить доступ к своему оригиналу myapp изнутри Employee через self.parentWidget().

class Employee(QtGui.QMainWindow): 

    def addText(self): 
     self.parentWidget().ui.textEdit.setText('someText') 
Смежные вопросы