pyqt下拉列表

#!/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_())

时间: 2024-08-10 05:11:10

pyqt下拉列表的相关文章

PYQT设计无边框窗体

#UI.py,通过UI设计师制作后直接转换为UI.py脚本 # -*- coding: utf-8 -*-from PyQt4 import QtCore, QtGui try:    _fromUtf8 = QtCore.QString.fromUtf8except AttributeError:    _fromUtf8 = lambda s: s class Ui_Form(object):    def setupUi(self, Form):        Form.setObject

Android EditText+ListPopupWindow实现可编辑的下拉列表

使用场景 AutoCompleteEditText只有开始输入并且与输入的字符有匹配的时候才弹出下拉列表.Spinner的缺点是不可以编辑.所以本文介绍如何使用EditText+ListPopupWindow实现可编辑的下拉列表.使用场景可以是有记住密码功能的登录框. 给EditText增加上下箭头 我们需要一个箭头图片,放在EditText的右面,用来点击后弹出下拉列表.如图所示 要想实现这个很容易,只需要在布局文件中给EditText设置一个drawableRight的属性. <EditTe

ajax中网页传输(二)JSON——下拉列表显示练习

以json返回数据类型显示“民族下拉列表” 第一:body页面显示部分 <title>JSON下拉显示Nation表中的数据</title> <script src="jquery-2.0.0.min.js"></script> </head> <body> <h1>用下拉显示Nation表中的数据</h1> <select id="sel"> </se

【转】Android:控件Spinner实现下拉列表

原文网址:http://www.cnblogs.com/tinyphp/p/3858920.html 在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一个必不可少的交互性组件,而在Android中的对应实现就是Spinner. 方法一: 以资源方式,静态展示 Spinner 选项: <Spinner android:layout_width="match_

ios 导航栏 点击barbutton的按钮 下拉列表

环境:xocde5.0.2+ios7.0.1 1.导航栏 ----点击科目--------下拉列表 代码:NGRightTableViewViewController.h #import <UIKit/UIKit.h> @protocol PulldownMenuDelegate -(void)menuItemSelected:(NSIndexPath *)indexPath; -(void)pullDownAnimated:(BOOL)open; @end @interface NGRigh

PyQt QString 与 Python str&amp;unicode

昨日,将许久以前做的模拟网页登录脚本用PyQt封装了一下,结果出大问题了, 登录无数次都提示登录失败!!而不用PyQt实现的GUI登录直接脚本登录无数次都提示登录成功!!心中甚是伤痛,于是探究起来,解决这一问题. 问题描述及证据如下: 上图是脚本MD5加密过程及结果 上图是PyQt GUI中获取密码框内容后加密的结果,其实现代码如下: # -*- coding: gbk -*- ''' Version : Python27 Author : Spring God Date : 2013-6-28

python窗体——pyqt初体验

连续两周留作业要写ftp的作业,从第一周就想实现一个窗体版本的,但是时间实在太短,qt零基础选手表示压力很大,幸好又延长了一周时间,所以也就有了今天这篇文章...只是为了介绍一些速成的方法,还有初学者会遇到的问题... 这里先介绍一个安装连接,一条龙服务,各种安装配置在这里都找得到:http://blog.sina.com.cn/s/blog_4c18e3160101a12g.html 什么是pyqt? 简而言之,qt是一个开发窗体程序的模块,原本是是C++的库,PyQt是Python的移植版本

jQuery学习(七)——使用JQ完成下拉列表左右选择

1.需求:实现以下功能 2.步骤分析: 第一步:确定事件(鼠标单击事件click) 第二步:获取左侧下拉列表被选中的option($("#left option:selected")) [假设左侧select定义了一个id=left] 第三步:将获取到的option添加到右侧的下拉列表中去.(append方法的使用) 3.具体代码实现: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset=&q

Excel技巧--做一去重复的数据下拉列表

当我们有一数据列表(内含重复数据),将该数据做成如下图的下拉列表: 可以这样做: 1.选中该标题行,按ctrl+shift+下方向键,将该列有数据的区域选中: 2.点击“数据”—>删除重复项: 由于该数据列还有左侧的数字列,所以我们只对当前选定的区域进行删除重复项并排序. 或者也可以一开始将该列复制到空白处形成新的一列,再对该列进行去重复操作,这样不影响原数据. 3.再一次重复第1步骤选定好该列区域,点击“公式”-->“根据所选内容创建”,对话框选择“首行”. 4.选择要做的下拉列表的单元格,