Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt5在Qtextedit上发出点击信号_Python_Pyqt_Pyqt5_Qt Designer_Qtextedit - Fatal编程技术网

Python PyQt5在Qtextedit上发出点击信号

Python PyQt5在Qtextedit上发出点击信号,python,pyqt,pyqt5,qt-designer,qtextedit,Python,Pyqt,Pyqt5,Qt Designer,Qtextedit,我的qtextedit字段中有一些预定义的文本。 我想让它一点击就消失。 所以我试图为它创建一个“点击”信号。以下是我所拥有的(只是重要的几行: from PyQt5.QtCore import pyqtSignal from PyQt5 import QtCore, QtGui, QtWidgets (……) (……) 我获得AttributeError:“QTextEdit”对象没有“单击”属性 我可以提供其余的代码,但目前它只是一个没有功能的ui。您不应该调用与另一个现有类相等的类,这可

我的qtextedit字段中有一些预定义的文本。 我想让它一点击就消失。 所以我试图为它创建一个“点击”信号。以下是我所拥有的(只是重要的几行:

from PyQt5.QtCore import pyqtSignal
from PyQt5 import QtCore, QtGui, QtWidgets
(……)

(……)

我获得AttributeError:“QTextEdit”对象没有“单击”属性


我可以提供其余的代码,但目前它只是一个没有功能的ui。

您不应该调用与另一个现有类相等的类,这可能会导致冲突,从而导致许多问题

除以下代码中的内容外:

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

哦,当然!谢谢!我已经读了很多关于事件过滤器的书,这是一个更好的解决方案吗?或者这样可以吗?@Error1Man两者都是等效的,我在无法覆盖类时使用eventFilter。
self.userfield = QtWidgets.QTextEdit(self.centralwidget)
# ...
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)
    # ...