Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4 | Как передать сигнал из дочернего окна в родительское? [RSS Feed]

#1 Март 13, 2017 13:43:44

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2683
Репутация: +  182  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

> Вообще, мне не понятно, зачем делать так … Т.е. для чего делать 2 функции, когда всё “на ура” проходит и в одной?

Это знаменитая ошибка “вынос части конструктора в отдельный метод”. Зачем ламы так делают? Я не знаю.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#2 Март 13, 2017 13:55:38

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

PyQt4 | Как передать сигнал из дочернего окна в родительское?

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_()

Отредактировано vic57 (Март 13, 2017 14:54:10)

Офлайн

  • Начало
  • » GUI
  • » PyQt4 | Как передать сигнал из дочернего окна в родительское? [RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version