框选多个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. python3-day3(函数-返回值)

    1.函数 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 2.return返回值 import smtplibfro ...

  2. [原创作品]html css改变浏览器选择文字的背景和颜色

    又很久没有'剥壳'了,最近在为一家公司做一个生产管理解决方案.所以都很忙.今天的话题很简单,就做一个很简单的网页特效.今天偶然浏览到一个网站,他们在选择文字时,样子不是蓝背景和白色字体那么单调,感觉这 ...

  3. 在 IIS 上创建 FTP 站点

    微软参考文档: 在 IIS 上生成 FTP 站点 主要过程: 1.控制面板 -> 程序 -> 启动或关闭Windows功能 -> 将Internet Information Serv ...

  4. String源码学习

    String源码学习 零散的收获 数组的元素类型可以通过getComponentType来获取到 子类型的数组可以赋值给父类型的数组,.但是并不存在继承关系.数组的父类是Object. 通过声明如下代 ...

  5. CoreText中坐标转换的一些理解

    引言 学习CoreText,最初的想法是写一个杂志类的应用,因为对网易和zarca应用一些技术的疑问,所以,自己有了很强的兴趣欲和钻研欲,开始这段有点不顺的学习过程. 难题 1.对CGContextR ...

  6. python-登录-注册-修改密码

    该脚本实现了,登录,注册,修改密码功能. #!/usr/bin/env python # -*- coding:utf-8 -*- #pangguoping import os def login(u ...

  7. 报错要跟到底就很更快更准确的发现问题所在一直in进去(其实都知道的哈)

    问题-查看详细信息-innerexception-innerexception

  8. Docker中的一些命令

    可以交互的方式启动container $ sudo docker run -t -i ubuntu:14.04 /bin/bash 当这个Bash shell进程终止时,这个容器也停止了. docke ...

  9. 拉姆达表达式(Lambda Expressions)

    上面两种写法是一样的 ,拉姆达表达式也是一种委托, 但引用的是匿名方法

  10. SQL cmd 实用工具学习 -1

    启动 sqlcmd 实用工具并连接到 SQL Server 的默认实例 在"开始"菜单上,单击"运行". 在"打开"框中,键入 cmd,然后 ...