#!/usr/bin/env python

# -*- coding: utf-8 -*-

from PyQt4.QtCore import Qt

from PyQt4.QtGui import QCompleter, QComboBox, QSortFilterProxyModel

class ExtendedComboBox(QComboBox):

def __init__(self, parent=None):

super(ExtendedComboBox, self).__init__(parent)

self.setFocusPolicy(Qt.StrongFocus)

self.setEditable(True)

# add a filter model to filter matching items

self.pFilterModel = QSortFilterProxyModel(self)

self.pFilterModel.setFilterCaseSensitivity(Qt.CaseInsensitive)

self.pFilterModel.setSourceModel(self.model())

# add a completer, which uses the filter model

self.completer = QCompleter(self.pFilterModel, self)

# always show all (filtered) completions

self.completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)

self.setCompleter(self.completer)

# connect signals

self.lineEdit().textEdited[unicode].connect(self.pFilterModel.setFilterFixedString)

self.completer.activated.connect(self.on_completer_activated)

# on selection of an item from the completer, select the corresponding item from combobox

def on_completer_activated(self, text):

if text:

index = self.findText(text)

self.setCurrentIndex(index)

# on model change, update the models of the filter and completer as well

def setModel(self, model):

super(ExtendedComboBox, self).setModel(model)

self.pFilterModel.setSourceModel(model)

self.completer.setModel(self.pFilterModel)

# on model column change, update the model column of the filter and completer as well

def setModelColumn(self, column):

self.completer.setCompletionColumn(column)

self.pFilterModel.setFilterKeyColumn(column)

super(ExtendedComboBox, self).setModelColumn(column)

if __name__ == "__main__":

import sys

from PyQt4.QtGui import QStringListModel, QApplication

app = QApplication(sys.argv)

string_list = ['hola muchachos', 'adios amigos', 'hello world', 'good bye']

combo = ExtendedComboBox()

# either fill the standard model of the combobox

combo.addItems(string_list)

# or use another model

#combo.setModel(QStringListModel(string_list))

combo.resize(300, 40)

combo.show()

sys.exit(app.exec_())

pyqt例子下拉列表的更多相关文章

  1. pyqt例子搜索文本

    #!/usr/bin/env python #-*- coding:utf-8 -*- import sip sip.setapi('QString', 2) sip.setapi('QVariant ...

  2. 关于struts值栈的总结,前端页面如何使用标签取得值栈中的数据

    用户提交一次请求的执行过程 总结: struts值栈中 两个内容 一个是栈 一个是map 值栈(数据中心)的范围是一个请求 它代替了request作用域 struts自定义标签有一个特点 比如遍历集合 ...

  3. python设计模式之命令模式

    python设计模式之命令模式 现在多数应用都有撤销操作.虽然难以想象,但在很多年里,任何软件中确实都不存在撤销操作.撤销操作是在1974年引入的,但Fortran和Lisp分别早在1957年和195 ...

  4. 第15.35节 PyQt编程实战:结合QDial实现的QStackedWidget堆叠窗口程序例子

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.案例说明 本案例是老猿在学习QStackedWidget中的一个测试案例,该案例使用QStack ...

  5. pyqt小例子 音乐盒

    源代码1: # -*- coding: utf-8 -*- import sys,time,os import ctypes from PyQt4 import QtCore, QtGui,Qt fr ...

  6. PyQt开发案例:结合QDial实现的QStackedWidget堆叠窗口程序例子及完整代码

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.案例说明 本案例是老猿在学习QStackedWidget中的一个测试案例,该案例使用QStack ...

  7. pyqt小例子 treewidget

    # -*- coding: cp936 -*- from PyQt4.QtCore import * from PyQt4.QtGui import * class InlineEditor(QWid ...

  8. pyqt托盘例子

    # -*- coding: cp936 -*- #!/usr/bin/env python # -*- coding:utf-8 -*- from PyQt4 import QtCore, QtGui ...

  9. pyqt之倒计时例子

    from PyQt4.Qt import *from PyQt4.QtCore import *from PyQt4.QtGui import *import sysdef main():    a= ...

随机推荐

  1. js中的call()与apply()

    js中的call()函数和apply()函数: 1.主要作用:是用于指定作用域和传参 (1)用于指定作用域 window.color = "red"; var o = { colo ...

  2. Ubuntu网络管理

    1.重启NetworkManager service network-manager stop rm /var/lib/NetworkManager/NetworkManager.state serv ...

  3. Java基础知识强化42:StringBuffer类之StringBuffer的截取功能

    1. StringBuffer的截取功能: public String subString(int Start): public String subString(int Start, int end ...

  4. ARM Cortex-M

    振荡周期.时钟周期.机器周期.指令周期 一个机器周期包含12个振荡周期或6个时钟周期 指令的执行时间称作指令周期(单.双.四周期) (1)振荡周期       振荡周期指为单片机提供定时信号的振荡源的 ...

  5. 【iOS开发之OC和JS互调】

    1.OC中调用JS代码 公司的移动端需要加载一个现有的网页,并且要在原网页要做一些小的调整,如将网页的标题改一下加载到手机的app上,此时就可以在app的oc代码中加入JS代码来实现.如下例子,我要加 ...

  6. 网页CSS

    CSS 样式表,(分三类:内联.内嵌.外部) 1,内联, 直接作于于 元素 例:   <p style="font-size:14px;"> 2,内嵌 作用于网页 首先 ...

  7. 关于sqfa

    有的时候定义状态,下次来到这个状态的时候,不应该就否决掉下次,因为下次的权值可能比这次更优..

  8. spark1.3.1使用基础教程

    spark可以通过交互式命令行及编程两种方式来进行调用: 前者支持scala与python 后者支持scala.python与java 本文参考https://spark.apache.org/doc ...

  9. python字符串格式化 %操作符 {}操作符---总结

    Python字符串格式化 (%占位操作符) 在许多编程语言中都包含有格式化字符串的功能,比如C和Fortran语言中的格式化输入输出.Python中内置有对字符串进行格式化的操作 %. 模板 格式化字 ...

  10. iOS开发中文件的上传和下载功能的基本实现-备用

    感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...