Не передается текст из QTextEdit

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

  • 1 - основная
  • 2 - диалог

В главной есть QTextEdit. Во второй форме есть переменная text. Когда я пытаюсь этой переменной текст из TextEdit передается пустая строка.

Почему ?

Фрагмент кода :

class DApp(QtWidgets.QMainWindow, TextEditorDes.Ui_Form ) :
  def __init__(self) :
    super().__init__()
    self.setupUi(self)

    self.MainTextEdit = QtWidgets.QTextEdit(Form)
    self.MainTextEdit.setGeometry(QtCore.QRect(10, 10, 581, 411)) 


    self.Dialog = Dialog(self)


    self.DialogButton.clicked.connect(self.DialogFunc)
  def DialogFunc() :
      self.Dialog.show()

 class Dialog(QWidget, DialogDes.Ui_Form) :
  def __init__(self, parent) :
    super().__init__()
    self.setupUi(self)
    self.parent = parent
    self.text = self.parent.MainTextEdit.toPlainText()

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

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

вы прописали self.text = self.parent.mainTextEdit.toPlainText() в методе __init__ , которая выполняется ОДИН раз и на момент инициализации в mainTextEdit пустой.

Попробуйте так:

import sys
from PyQt5 import QtWidgets, QtCore


class Dialog(QtWidgets.QWidget):      #, DialogDes.Ui_Form):
    def __init__(self, parent) :
        super().__init__()
#        self.setupUi(self)
        self.parent = parent

    def printText(self):                                                # +++
        self.text = self.parent.mainTextEdit.toPlainText()
        print("1", self.text)


class DApp(QtWidgets.QMainWindow):    #, TextEditorDes.Ui_Form ):
    def __init__(self) :
        super().__init__()
#        self.setupUi(self)

        self.mainTextEdit = QtWidgets.QTextEdit(self)                    # - Form / + self
        self.mainTextEdit.setGeometry(QtCore.QRect(10, 40, 581, 411)) 

        self.dialogButton = QtWidgets.QPushButton("dialogButton", self)
        self.dialogButton.clicked.connect(self.dialogFunc)

        self.dialog = Dialog(self)

    def dialogFunc(self):                                                # + self     
        self.dialog.show()
        self.dialog.printText()                                          # +++
        print("2", self.dialog.text)


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = DApp()
    w.resize(600, 450)
    w.show()
    sys.exit(app.exec_())

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

→ Ссылка