wrong1man
wrong1man

Reputation: 333

PyQt5 emit clicked signal on Qtextedit

My qtextedit field has some predefined text in it. I would like to make it disappear as soon as it is clicked. So im trying to create a "clicked" signal for it. Here is what i have (just important lines:

from PyQt5.QtCore import pyqtSignal
from PyQt5 import QtCore, QtGui, QtWidgets

(...)

class QTextEdit(QtWidgets.QTextEdit):
    clicked = pyqtSignal()
    def mouseReleaseEvent(self,event):
        self.clicked.emit()

(...)

    self.userfield = QtWidgets.QTextEdit(self.centralwidget)
    self.userfield.setMaximumSize(QtCore.QSize(200, 30))
    self.userfield.setObjectName("userfield")
    self.userfield.clicked.connect(lambda: self.txt())

I get AttributeError: 'QTextEdit' object has no attribute 'clicked'

I can provide the rest of the code, but it is just an unfunctional ui for now.

Upvotes: 3

Views: 3199

Answers (1)

eyllanesc
eyllanesc

Reputation: 243955

You should not call a class equal to another existing class, that can cause you conflicts and therefore many problems.

Apart from that in the following code:

self.userfield = QtWidgets.QTextEdit(self.centralwidget)

You are telling them to use the QTextEdit from QtWidgets module and not your class.

Solution:

# ...
class TextEdit(QtWidgets.QTextEdit):
    clicked = pyqtSignal()
    def mouseReleaseEvent(self,event):
        self.clicked.emit()
# ...
    self.userfield = TextEdit(self.centralwidget)
    self.userfield.setMaximumSize(QtCore.QSize(200, 30))
    self.userfield.setObjectName("userfield")
    self.userfield.clicked.connect(self.txt)
    # ...

Upvotes: 2

Related Questions