> Вообще, мне не понятно, зачем делать так … Т.е. для чего делать 2 функции, когда всё “на ура” проходит и в одной?
Это знаменитая ошибка “вынос части конструктора в отдельный метод”. Зачем ламы так делают? Я не знаю.
Kyrymтакой функционал в QDockWidget есть
Я же написал, что дочернее окно должно работать отдельно от родительского.
class View(QWidget): dataChanged = pyqtSignal(str) def __init__(self,parent=None): QWidget.__init__(self,parent) self.btnApply = QPushButton(u'Применить') self.btnOK = QPushButton(u'Закрыть') self.line = QLineEdit() grid = QGridLayout(self) grid.addWidget(self.line,0,0,1,3) grid.addWidget(self.btnOK,1,1) grid.addWidget(self.btnApply,1,2) self.btnOK.clicked.connect(self.close) self.btnApply.clicked.connect(self.getData) def getData(self): self.dataChanged.emit(self.line.text()) class W(QWidget): def __init__(self): QWidget.__init__(self) self.btn = QPushButton("Push") self.line = QLineEdit() grid = QGridLayout(self) grid.addWidget(self.line,0,0) grid.addWidget(self.btn,1,0) self.btn.clicked.connect(self.btnClick) self.view = View() self.view.dataChanged.connect(self.setData) def btnClick(self): self.view.show() def setData(self,data): self.line.setText(data) def app_quit(): sys.exit() if __name__=="__main__": app = QApplication([]) app.lastWindowClosed.connect(app_quit) w = W() w.show() app.exec_()