【问题标题】:how to remove the cursor in QLineedit completer如何在 QLineedit 完成程序中删除光标
【发布时间】:2019-06-18 09:43:22
【问题描述】:

这是我的 Qlineedit Completer 示例程序。在 Autosuggestion 之后,我想将文本显示为行编辑中项目的开头,因为我写了 completer.activated.connect(lambda: QTimer.singleShot(0, lambda: edit.home(False)))。它工作正常,但我不想在乞讨和自动建议后显示光标。

下面是我的代码:

import sys
from PyQt4.QtCore import Qt,QTimer
from PyQt4.QtGui import QApplication, QCompleter, QLineEdit, QStringListModel

def get_data(model):
   model.setStringList(["completionProgramxxxxxxxxxxxxxxx", "completionProgramyyyyyy","truthordisabled", "storecredit", "iamhere"])

if __name__ == "__main__":

    app = QApplication(sys.argv)
    edit = QLineEdit()
    completer = QCompleter()
    edit.setCompleter(completer)
    completer.activated.connect(lambda:  QTimer.singleShot(0, lambda: edit.home(False)))

    model = QStringListModel()
    completer.setModel(model)
    get_data(model)
    edit.show()
    sys.exit(app.exec_())

我得到了这样的图像:

【问题讨论】:

    标签: python pyqt pyqt4 qlineedit qcompleter


    【解决方案1】:

    你必须清理焦点:

    import sys
    from PyQt4 import QtCore, QtGui
    
    
    def get_data(model):
        model.setStringList(
            [
                "completionProgramxxxxxxxxxxxxxxx",
                "completionProgramyyyyyy",
                "truthordisabled",
                "storecredit",
                "iamhere",
            ]
        )
    
    
    class Completer(QtGui.QCompleter):
        def __init__(self, parent=None):
            super(Completer, self).__init__(parent)
            self.activated.connect(self.on_activated)
    
        @QtCore.pyqtSlot()
        def on_activated(self):
            le = self.widget()
            if isinstance(le, QtGui.QLineEdit):
                le.home(False)
                le.clearFocus()
    
    
    if __name__ == "__main__":
    
        app = QtGui.QApplication(sys.argv)
        edit = QtGui.QLineEdit()
        completer = Completer(edit)
        edit.setCompleter(completer)
        model = QtGui.QStringListModel(edit)
        completer.setModel(model)
        get_data(model)
        edit.show()
        sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      • 2016-03-19
      • 2012-04-28
      • 2021-07-12
      • 2014-09-30
      相关资源
      最近更新 更多