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_())

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

目录
相关文章
pyqt5的 QPrinter 使用模板
说明 这个QPrinter 使用模板,提供了四种打印方式。 一.调用 打印对话框二.调用 打印预览框三.直接打印四.打印到PDF 【如下代码,完全复制,直接运行,即可使用】 from PyQt5.
1943 0
|
Android开发 文件存储
|
Web App开发 数据安全/隐私保护
pyqt5的QWebEngineView 使用模板1
说明1:关于QWebEngineView pyqt5 已经抛弃 QtWebKit和QtWebKitWidgets,而使用最新的QtWebEngineWidgets。
1606 0
|
JavaScript 前端开发
pyqt5的runJavaScript 使用模板
runJavaScript 的说明 QWebEnginePage 有一个 runJavaScript 方法,支持回调函数。 使用方法1 只运行JavaScript,没有回调 def run_js(self): js_string...
2466 1
|
存储 分布式计算 JavaScript
Ipython富文本功能
Ipython富文本功能
273 0
|
前端开发 Python JavaScript
Hilite代码高亮工具
在用《有道云笔记》等软件时候,软件自身不提供代码高亮功能,对于需要记录code的学习笔记,视觉效果丢失。 有很多在线工具能用来代码高亮,比如oschina就有代码高亮页面用于着色。 但是我想要sublime里那种效果,有没有方法做到? 应该已经有人开发过这种插件了吧:代码高亮,主题选取,甚至字体、行号......各种js插件? 为了练手我自己手用python写了一个web app用来代码高亮:服务端用pygments进行语法解析,前端用pygments生成的颜色主题css进行配色。
898 0
|
Python
PyQt5 图形界面 - Qt Designer设置简体中文方法演示,Qt Designer字体设置,Qt Designer工具单独安装包获取,Qt Designer简体中文语言包获取
PyQt5 图形界面 - Qt Designer设置简体中文方法演示,Qt Designer字体设置,Qt Designer工具单独安装包获取,Qt Designer简体中文语言包获取
1570 0
PyQt5 图形界面 - Qt Designer设置简体中文方法演示,Qt Designer字体设置,Qt Designer工具单独安装包获取,Qt Designer简体中文语言包获取
|
Python 图形学
pyqt样式表语法笔记(中)
pyqt样式表语法笔记(中) pyqt QSS python 样式表 一、弹窗 在日常的各种桌面软件的使用中,我们都会碰到弹窗。例如注册,登录的时候,会有相应的信息弹窗,这里就以信息收集弹窗为例进行弹窗的说明。
946 0
|
Python
pyqt样式表语法笔记
pyqt样式表语法笔记 pyqt QSS python 样式表 因为软件课设的原因开始学习使用pyqt4,才发现原来它也有样式表,而且语法跟css基本相同,而且一些功能实现起来感觉比js要简单方便得多。
1184 0
|
Windows C++
eclipsecdt添加自动补全功能
自动代码补全完全是一个改善生活质量的功能呀!cdt拥有自动代码补全功能,只是我们没有打开而已 1. 绑定快捷方式  1. windows -> preferences ->general->keys 在搜索框输入 template 然后在binding 中输入 alt+/ 2. 开启自动填充功能 windows -> preferences -> c/c++ -> editor -> templates 将最下面的 user code formatter 勾选上。
975 0

热门文章

最新文章