PyQt5 在 Qtextedit 上发出点击信号

PyQt5 emit clicked signal on Qtextedit

我的 qtextedit 字段中有一些预定义的文本。 我想让它在单击后立即消失。 所以我试图为它创建一个 "clicked" 信号。这是我所拥有的(只是重要的几行:

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。

你不应该调用一个 class 等于另一个现有的 class,这会导致你发生冲突并因此产生很多问题。

除以下代码外:

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

您告诉他们使用 QtWidgets 模块中的 QTextEdit 而不是您的 class。

解法:

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