PyQt5 обращение к другой форме

Есть две формы :

    1. Главная
    1. Диалог

Обе формы как отдельные виджеты, представленные в отдельных классах.

Как мне сделать так, чтобы при нажатии на кнопку в диалоге менялось содержимое TextEdit в главной форме?


Ответы (1 шт):

Автор решения: S. Nick

Как вариант:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDialog, QPushButton, \
     QVBoxLayout,  QMessageBox, QTextEdit


class Dialog(QDialog):
    def __init__(self, parent):
        super(Dialog, self).__init__()
        self.setGeometry(800, 400, 300, 100)
        self.parent = parent

        self.textEdit = QTextEdit(self)
        self.button = QPushButton('Отправить в Main', self)
        self.button.clicked.connect(self.onClicked)

        layout = QVBoxLayout(self)
        layout.addWidget(self.textEdit)
        layout.addWidget(self.button)        

    def onClicked(self):
        if self.textEdit.toPlainText():
            self.parent.textEdit.append(self.textEdit.toPlainText())
            self.textEdit.clear()
            self.close()
        else:
            QMessageBox.information(self, 'Information', 'Нет данных для передачи в Main.')


class Main(QWidget):
    def __init__(self):
        super(Main, self).__init__()

        self.textEdit = QTextEdit()
        button = QPushButton('Вызвать Dialog')
        button.clicked.connect(self.showDialog)

        layout = QVBoxLayout(self)
        layout.addWidget(self.textEdit)
        layout.addWidget(button)

        self.dialog = Dialog(self)     

    def showDialog(self):
        self.dialog.exec_()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Main()
    w.resize(300, 100)
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка