PyQt5在Qtextedit上发出点击信号

时间:2018-04-11 19:09:38

标签: python pyqt pyqt5 qt-designer qtextedit

我的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。

1 个答案:

答案 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)
...