我的qtextedit字段中包含一些预定义文本。 我想让它在点击后立即消失。 所以我试图为它创建一个“点击”信号。这就是我所拥有的(只是重要的一句话:
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())
我得到了AttributeError:'QTextEdit'对象没有'clicked'属性
我可以提供剩下的代码,但现在它只是一个无法使用的UI。
答案 0 :(得分:1)
你不应该调用一个等于另一个现有类的类,这可能会导致冲突,从而导致很多问题。
除了以下代码中的内容:
self.userfield = QtWidgets.QTextEdit(self.centralwidget)
您告诉他们使用QtWidgets模块中的QTextEdit,而不是您的班级。
<强>解决方案:强>
...
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)
...