框选多个item之后,用空格键可以勾选/去选多个item,效果如下图所示:

http://oglop.gitbooks.io/pyqt-pyside-cookbook/list/img/checkbox_multi_toggle.gif

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

# python:2.x

__author__ = 'Administrator'

from PyQt4.Qt import *

from PyQt4.QtCore import *

from PyQt4.QtGui import *

import os,sys

class Th(QListWidget):

def __init__(self,types ,parent=None):

super(Th,self).__init__(parent)

self.setIconSize(QSize(124,124))#设置icon的大小

self.setSelectionMode(QAbstractItemView.ExtendedSelection)#说明看下面

self.setAcceptDrops(True)#setAcceptDrops(bool)

self.setSelectionRectVisible(True)

def keyPressEvent(self,e):

if e.key()==Qt.Key_Space:

if self.selectedItems():

new_state=Qt.Unchecked if self.selectedItems()[0].checkState() else Qt.Checked

for item in self.selectedItems():

if item.flags()&Qt.ItemIsUserCheckable:

item.setCheckState(new_state)

self.viewport().update()

elif e.key()==Qt.Key_Delete:

for item in self.selectedItems():

self.takeItem(self.row(item))

def iterAllItems(self):

for i in range(self.count()):

yield  self.item(i)

class Dia(QMainWindow):

def __init__(self):

super(Dia,self).__init__()

self.listItems=[]

myQWidget=QWidget()

boxlayout=QVBoxLayout()

myQWidget.setLayout(boxlayout)

self.setCentralWidget(myQWidget)

self.listWidgetA=Th(self)

for i in range(5):

QListWidgetItem('item'+str(i),self.listWidgetA)

for item in self.listWidgetA.iterAllItems():

item.setFlags(item.flags()|Qt.ItemIsUserCheckable)#设置listwidget的条目可选

item.setCheckState(Qt.Checked)#赋初值,所有条目都选中

boxlayout.addWidget(self.listWidgetA)

self.listWidgetA.setAcceptDrops(False)

self.listWidgetA.viewport().update()#默认视口矩形和设备矩形一样

if __name__=='__main__':

app=QApplication(sys.argv)

d=Dia()

d.show()

d.resize(400,140)

sys.exit(app.exec_())

如图

#说明

"""

listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)#设置选择模式

选择模式有:ExtendedSelection 按住ctrl多选,SingleSelection 单选 MultiSelection 点击多选 ContiguousSelection鼠标拖拉多选

setAcceptDrops(bool)

设定组件接受拖放动作,在拖放动作发生时,会 有相对应的QDragEnterEvent、QDragMoveEvent、QDragLeaveEvent与QDropEvent等事件发生,您可以重 新定义dragEnterEvent()、dragMoveEvent()、dragLeaveEvent()与dropEvent()等事件处理者,

以 处理相对应的拖放事件,通常会使用的是dragEnterEvent()与dropEvent()。

更多说明访问文档或者查看(http://blog.csdn.net/jiong_1988/article/details/7494607)

selectedItems() 方法,获取被选中的项,可以是多项

setCentralWidget()将某个Widget设置为主窗口的central widget, 而central widget意味着在显示时会占据主窗口的中央位置。

"""

pyqt 同时勾选多个items(网友提供学习)的更多相关文章

  1. pyqt动态创建一系列组件并绑定信号和槽(网友提供学习)

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #如上图要求:创建指定多个复选框,一种是通过QT设计器Designe ...

  2. python爬爬(网友提供学习)

    import urllib2,urllib,os,re def ZZ(url): pathw=os.getcwd() #图片和标题目录 imagetitleregion=r'<div class ...

  3. 使用递归方法遍历TreeView的节点如配置则勾选

    自己在网上找了一段时间都没有找到取自数据库的值与TreeView中的节点值进行对比如匹配则勾选中CheckBox的资料,后面自己写了一个递归方法实现,现在记录起来以备需要时使用.在没写这递归方法前如果 ...

  4. Windows 8 图标前面的勾选

    http://bbs.pcbeta.com/viewthread-999730-1-1.html 不管是桌面的图标还是资源管理器中的图标之前都出现了一个小小的方框.选中图标的时候会自动勾选那个框,如果 ...

  5. jquery checkbox勾选取消勾选的诡异问题

    jquery checkbox勾选/取消勾选的诡异问题jquery checkbox勾选/取消勾选的诡异问题 <form>        你爱好的运动是?<input type=&q ...

  6. jQuery版本引发的血案 iframe error 和 checkbox 无法勾选

    问题介绍: 1.由于我们的项目里面用了很多Iframe,在初始话加载的时候页面就会报错.一开始调试很久没找到什么原因,看打印结果页面会被两次load,只能一步步找, 最后发现在document rea ...

  7. Jquery-获取勾选的checkbox的同级节点数量

    // 获取勾选的标签值得上一个兄弟节点 var groups = []; $('input[name="group_name"]:checked').siblings(" ...

  8. ASPxGridView 选中主表一行数据,从表自动选中(勾选)对应的行

    一.图解 下图为效果图,点击 [A表]种的某一行,[B表]会有与之相对于一行会被自动选中并且勾选上: 二.Html 代码 <html xmlns="http://www.w3.org/ ...

  9. Ext.js中树勾选的四种操作

    最近在做控件优化的时候产品提了一个需求,对树的勾选要满足四种勾选方案: 1.点击一次根节点,当根节点和子节点均未选中的情况下,根节点和子节点全都选中. 2.第二次点击根节点,当根节点和部分或全部子节点 ...

随机推荐

  1. 设计模式之Application Programs and Toolkits

    Application Programs 应用程序 If you're building an application programsuch as a document editor or spre ...

  2. oendir(),readdir(),closedir() 打开/读取/关闭目录

    目录操作 当目标是目录而不是文件的时候,ls -l的结果会显示目录下所有子条目的信息,怎么去遍历整个目录呢?答案马上揭晓! 1. 打开目录 功能:opendir()用来打开参数name指定的目录,并返 ...

  3. Node.js 之 express 入门 ejs include公共部分

    1. 直接进入express安装 因为之前有一篇文章我已经讲过怎么安装node了 而网上的教程也是非常多.所有直接进入到express.教程简陋 由于我比较笨 所有只要写到我自己明白就行. 这里有个教 ...

  4. Samba的ADS域模式和RPC域模式

    对于Samba服务器,有两种域安全模式,加入到Windows 2000或者Windows 2003域控制器(DC‘s)控制的域中: RPC 模式 RPC(远程过程调用)模式的域成员是"NT4 ...

  5. 不安装开发环境,查看logcat日志

    #公司的测试终于想到要看 android 的日志.安装开发环境太麻烦了,这里有个简单的办法. 我把\sdk\platform-tools目录中,文件名以"adb"开头的三个文件打包 ...

  6. python进行base64编解码

    [转] 直接上代码 import base64 fin = open(r"D:\2.zip", "rb") fout = open(r"D:\2.x. ...

  7. jquery validate form 异步提交

    jQuery取得select选中的值 jQuery("#select1  option:selected").text(); 相信很多人都用过jquery validate插件,非 ...

  8. JavaScript可否多线程? 深入理解JavaScript定时机制(转载)

    说明:最近写 js 时需要用setinterval函数做定时操作,谁知道,刚开始后运行完好,但一段时间后他就抽风了,定时任务运行的时间间隔越来越短,频率加快,这是一个完全不能容忍的问题,带着一个可以出 ...

  9. JSON.stringify 语法实例讲解 字符串

    语法: JSON.stringify(value [, replacer] [, space]) var student = new Object(); student.name = "La ...

  10. http_load压力测试

    http_load是基于linux平台的性能测试工具,它体积非常小,仅100KB.它以并行复用的方式运行,可以测试web服务器的吞吐量与负载. 一.安装http_load A.进入/usr/local ...