Найти - Пользователи
Полная версия: PyQt4 | Как передать сигнал из дочернего окна в родительское?
Начало » GUI » PyQt4 | Как передать сигнал из дочернего окна в родительское?
1 2 3 4 5
Rodegast
> Вообще, мне не понятно, зачем делать так … Т.е. для чего делать 2 функции, когда всё “на ура” проходит и в одной?

Это знаменитая ошибка “вынос части конструктора в отдельный метод”. Зачем ламы так делают? Я не знаю.
vic57
Kyrym
Я же написал, что дочернее окно должно работать отдельно от родительского.
такой функционал в QDockWidget есть
http://www.tutorialspoint.com/pyqt/pyqt_qdockwidget.htm
можно так:
 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_()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB