【问题标题】:How to turn a Clickable QLineEdit to a normal one after first click?第一次点击后如何将可点击的 QLineEdit 变成普通的?
【发布时间】:2019-01-10 13:49:52
【问题描述】:

我有一个可点击的线条编辑:

> 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之后,现在我希望用户可以点击输入文本进行编辑。

【问题讨论】:

    标签: python pyqt4 qlineedit


    【解决方案1】:

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

    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)
    

    【讨论】:

    • 绝妙的答案!
    【解决方案2】:

    在第一次点击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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-17
      • 2017-07-03
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      相关资源
      最近更新 更多