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.
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)
# ...