pyqt5的QCompleter自动补全 使用模板

简介: 使用QCompleter类,就可以实现自动补全功能

相关说明

使用QCompleter类,就可以实现自动补全功能,效果图如下:

对应的代码很简单

    def init_lineedit(self):
        # 增加自动补全
        self.completer = QCompleter(items_list)
        # 设置匹配模式  有三种: Qt.MatchStartsWith 开头匹配(默认)  Qt.MatchContains 内容匹配  Qt.MatchEndsWith 结尾匹配
        self.completer.setFilterMode(Qt.MatchContains)
        # 设置补全模式  有三种: QCompleter.PopupCompletion(默认)  QCompleter.InlineCompletion   QCompleter.UnfilteredPopupCompletion
        self.completer.setCompletionMode(QCompleter.PopupCompletion) 
        # 给lineedit设置补全器
        self.lineedit.setCompleter(self.completer)


    def init_combobox(self):
        # 增加选项元素
        for i in range(len(items_list)):
            self.combobox.addItem(items_list[i])
        self.combobox.setCurrentIndex(-1)

        # 增加自动补全
        self.completer = QCompleter(items_list)
        self.completer.setFilterMode(Qt.MatchContains)
        self.completer.setCompletionMode(QCompleter.PopupCompletion)
        self.combobox.setCompleter(self.completer)

【如下代码,完全复制,直接运行,即可使用】

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
################################################

items_list=["C","C++","Java","Python","JavaScript","C#","Swift","go","Ruby","Lua","PHP"]

################################################
class Widget(QWidget):
    def __init__(self, *args, **kwargs):
        super(Widget, self).__init__(*args, **kwargs)
        layout = QHBoxLayout(self)
        self.lineedit = QLineEdit(self, minimumWidth=200)
        self.combobox = QComboBox(self, minimumWidth=200)
        self.combobox.setEditable(True)


        layout.addWidget(QLabel("QLineEdit", self))
        layout.addWidget(self.lineedit)
        layout.addItem(QSpacerItem(20, 20, QSizePolicy.Expanding, QSizePolicy.Minimum))

        layout.addWidget(QLabel("QComboBox", self))
        layout.addWidget(self.combobox)


        #初始化combobox
        self.init_lineedit()
        self.init_combobox()


        #增加选中事件
        self.combobox.activated.connect(self.on_combobox_Activate)



    def init_lineedit(self):
        # 增加自动补全
        self.completer = QCompleter(items_list)
        # 设置匹配模式  有三种: Qt.MatchStartsWith 开头匹配(默认)  Qt.MatchContains 内容匹配  Qt.MatchEndsWith 结尾匹配
        self.completer.setFilterMode(Qt.MatchContains)
        # 设置补全模式  有三种: QCompleter.PopupCompletion(默认)  QCompleter.InlineCompletion   QCompleter.UnfilteredPopupCompletion
        self.completer.setCompletionMode(QCompleter.PopupCompletion)
        # 给lineedit设置补全器
        self.lineedit.setCompleter(self.completer)



    def init_combobox(self):
        # 增加选项元素
        for i in range(len(items_list)):
            self.combobox.addItem(items_list[i])
        self.combobox.setCurrentIndex(-1)

        # 增加自动补全
        self.completer = QCompleter(items_list)
        self.completer.setFilterMode(Qt.MatchContains)
        self.completer.setCompletionMode(QCompleter.PopupCompletion)
        self.combobox.setCompleter(self.completer)


    def on_combobox_Activate(self, index):
        print(self.combobox.count())
        print(self.combobox.currentIndex())
        print(self.combobox.currentText())
        print(self.combobox.currentData())
        print(self.combobox.itemData(self.combobox.currentIndex()))
        print(self.combobox.itemText(self.combobox.currentIndex()))
        print(self.combobox.itemText(index))






if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

本文如有帮助,敬请留言鼓励。
本文如有错误,敬请留言改进。

目录
相关文章
SVG VSCode 插件(语法提示补全、预览插件)
SVG VSCode 插件(语法提示补全、预览插件)
1564 0
|
前端开发
Canvas 在 VSCode 中如何代码提示补全
Canvas 在 VSCode 中如何代码提示补全
365 0
|
Python 容器
Python高级进阶#005 pyqt5显示提示框
Python高级进阶#005 pyqt5显示提示框
232 0
嘿,我造了个代码高亮的插件
写这个插件的初衷是因为 Medium 总是不高亮作者的代码。当然也有人用 Codepen, CodeSandbox 或者 Gist 来嵌入代码。 但是这样实在麻烦,有些人(比如我)就很不想为了几句代码而创建一个 Gist 文件,然后直接用 Medium 提供的代码块。所以我经常看到这样的代码块 为了解决这个问题,我就写了这个插件来高亮 Medium 里的代码块,后面还意外发现简书,知乎,StackOverflow 等网站都能高亮,嘻嘻!
嘿,我造了个代码高亮的插件
VSCode 自动补全插件编写到发布
VSCode 自动补全插件编写到发布
349 0
VSCode 自动补全插件编写到发布
Qt-写一个模版出来
Qt-写一个模版出来
153 0
Qt-写一个模版出来
|
Android开发 文件存储
|
JavaScript 前端开发
pyqt5的runJavaScript 使用模板
runJavaScript 的说明 QWebEnginePage 有一个 runJavaScript 方法,支持回调函数。 使用方法1 只运行JavaScript,没有回调 def run_js(self): js_string...
2458 1
|
Python
Python配置tab自动补全功能
# cat tab.py #!/usr/bin/python # python tab file import sys import readline import rlcompleter import atexit import os # tab completion readline.
2064 0
pyqt5的 QPrinter 使用模板
说明 这个QPrinter 使用模板,提供了四种打印方式。 一.调用 打印对话框二.调用 打印预览框三.直接打印四.打印到PDF 【如下代码,完全复制,直接运行,即可使用】 from PyQt5.
1937 0

热门文章

最新文章