python – PyQt – 多次使用QLineEdit自动完成
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – PyQt – 多次使用QLineEdit自动完成,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1442字,纯文字阅读大概需要3分钟。
内容图文
![python – PyQt – 多次使用QLineEdit自动完成](/upload/InfoBanner/zyjiaocheng/704/eb9ea4746ebd40af8e448168a4be5b1b.jpg)
我希望有可能在我的QLineEdit中多次使用自动完成器,我发现使用QTextEdit的例子,但我找不到QLineEdit.这是我使用的一段代码(非常简单):
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
def main():
app = QApplication(sys.argv)
edit = QLineEdit()
strList = ["Germany", "Spain", "France", "Norway"]
completer = QCompleter(strList,edit)
edit.setCompleter(completer)
edit.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
例如,如果我添加一个逗号,我希望完成者再次“开始预测”同一QLineEdit中的单词.
谢谢.
解决方法:
我找到了答案,如果它可以帮助别人,我为Completer创建了一个类:
class Completer(QtWidgets.QCompleter):
def __init__(self, parent=None):
super(Completer, self).__init__(parent)
self.setCaseSensitivity(Qt.CaseInsensitive)
self.setCompletionMode(QtWidgets.QCompleter.PopupCompletion)
self.setWrapAround(False)
# Add texts instead of replace
def pathFromIndex(self, index):
path = QtWidgets.QCompleter.pathFromIndex(self, index)
lst = str(self.widget().text()).split(',')
if len(lst) > 1:
path = '%s, %s' % (','.join(lst[:-1]), path)
return path
# Add operator to separate between texts
def splitPath(self, path):
path = str(path.split(',')[-1]).lstrip(' ')
return [path]
我在QLineEdit的类中使用它,如:
class TextEdit(QtWidgets.QLineEdit):
def __init__(self, parent=None):
super(TextEdit, self).__init__(parent)
self.setPlaceholderText("example : ")
self._completer = Completer(self)
self.setCompleter(self._completer)
内容总结
以上是互联网集市为您收集整理的python – PyQt – 多次使用QLineEdit自动完成全部内容,希望文章能够帮你解决python – PyQt – 多次使用QLineEdit自动完成所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】