如何在第一次点击后将可点击的 QLineEdit 变为普通的?

How to turn a Clickable QLineEdit to a normal one after first click?

我有一个可点击的行编辑:

> class ClickableLineEdit(QtGui.QLineEdit): #This is the Class which let you to have a clickable QLineEdit
      clicked = QtCore.pyqtSignal()
      def mousePressEvent(self, event):
            self.clicked.emit()
            QtGui.QLineEdit.mousePressEvent(self, event)

点击后清除默认文本:

        self.lineEdit = ClickableLineEdit(Form)
        self.lineEdit.setText(_translate("Form", "0.14286", None)) #Carrying the default value of QLineEdit.
        self.lineEdit.clicked.connect(self.lineEdit_refrac.clear)

如何更改我的代码以在第一次单击后将 QlineEdit 的行为设置为正常?

这意味着清除lineEdit后,现在我希望用户可以点击输入文本进行编辑。

在这种情况下,我认为没有必要实现信号,只需要使用标志。

class LineEdit(QtGui.QLineEdit):
    def __init__(self, *args, **kwargs):
        super(LineEdit, self).__init__(*args, **kwargs)
        self.flag = False

    def mousePressEvent(self, event):
        if not self.flag:
            self.clear()
        self.flag = True
        QtGui.QLineEdit.mousePressEvent(self, event)

# ...

    self.lineEdit = LineEdit(Form)
    self.lineEdit.setText(_translate("Form", "0.14286", None)) #Carrying the default value of QLineEdit.
    # self.lineEdit.clicked.connect(self.lineEdit_refrac.clear)

在第一次点击QLineEdit时调用的方法中,可以断开连接。所以变成这样:

self.lineEdit.clicked.connect(self.lineEdit_refrac.clear)

进入:

self.lineEdit.clicked.connect(self.clear_line_edit)

def clear_line_edit(self):
    self.lineEdit_refrac.clear() # does what you wanted
    self.lineEdit.clicked.disconnect(self.clear_line_edit) # then ensures the click does not call this method anymore