0

I need get text from QTextEdit, but have such trouble: Traceback (most recent call last): File "main.py", line 28, in otpravit_naz textboxValue = self.textEdit.text() AttributeError: 'MyWin' object has no attribute 'textEdit'

This is my code(main.py):

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from test import *
import socket

sock = socket.socket()

class MyWin(QtWidgets.QMainWindow):

    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.otpravit.clicked.connect(self.otpravit_naz)
        


    def mbox(self, body, title='Error'):
        dialog = QMessageBox(QMessageBox.Information, title, body)
        dialog.exec_()

    def otpravit_naz(self):
        print("1")
        textboxValue = self.textEdit.text()
        print(textboxValue)
        #sock.connect(('192.168.1.16', 9090))
        sock.connect(("192.168.1.45", 9090))
        sock.send(b'textboxValue')
        sock.close()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    myapp = MyWin()
    myapp.show()
    sys.exit(app.exec_())

And ui form:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(517, 283)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(60, 20, 421, 201))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setSpacing(23)
        self.verticalLayout.setObjectName("verticalLayout")
        self.textEdit = QtWidgets.QTextEdit(self.verticalLayoutWidget)
        self.textEdit.setObjectName("textEdit")
        self.verticalLayout.addWidget(self.textEdit)
        self.label = QtWidgets.QLabel(self.verticalLayoutWidget)
        self.label.setLineWidth(0)
        self.label.setMidLineWidth(0)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.list = QtWidgets.QComboBox(self.verticalLayoutWidget)
        self.list.setObjectName("list")
        self.list.addItem("")
        self.list.addItem("")
        self.list.addItem("")
        self.verticalLayout.addWidget(self.list)
        self.otpravit = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.otpravit.setObjectName("otpravit")
        self.verticalLayout.addWidget(self.otpravit)
        self.verticalLayout.setStretch(0, 20)
        self.verticalLayout.setStretch(1, 20)
        self.verticalLayout.setStretch(2, 20)
        self.verticalLayout.setStretch(3, 20)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 517, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "Предмет:"))
        self.list.setItemText(0, _translate("MainWindow", "Русский"))
        self.list.setItemText(1, _translate("MainWindow", "Литература"))
        self.list.setItemText(2, _translate("MainWindow", "Английский"))
        self.otpravit.setText(_translate("MainWindow", "Отправить"))




if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

If it very stupid troble, pls don't kick me

vorobey
  • 13
  • 1
  • 1
  • 3

1 Answers1

2

You're "installing" the GUI on the self.ui object, so every widget that is on the ui is actually accessible as self.ui.someWidget.

Also, QTextEdit doesn't have a text() property, but toPlainText():

    def otpravit_naz(self):
        print("1")
        textboxValue = self.ui.textEdit.toPlainText()
        print(textboxValue)

I suggest you to never edit the files generated with pyuic, but always use them as imported modules; read more on using Designer; also, be careful to set the main layout on the central widget, not on its children, and add everything to that layout, otherwise the children widgets could be hidden whenever the window is resized.

musicamante
  • 41,230
  • 6
  • 33
  • 58