框选多个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. mysql 获取当前时间戳

      mysql 获取当前时间为select now() 运行结果: 2012-09-05 17:24:15 mysql 获取当前时间戳为select unix_timestamp(now()) 运行结 ...

  2. python字符串(移除空白,长度,索引,分割,切片,拼接,格式化输出)

    常用功能: 移除空白: >>> name = "meng" >>> name 'meng' >>> name.strip() ...

  3. [TypeScript] Avoid any type

    To avoid using "any" type is a best pratice. The reason for that is it disable the power o ...

  4. 关于css3的rgba

    在rgba之前,我们应该知道rgb.它就是红色R+绿色G+蓝色B.那rgba是什么?简单的说就是在rgb的基础之上加上一个通道alpha.他的语法如下: r    红色值.正整数(0~255) | 百 ...

  5. 类型“XXX”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。

    问题:类型“Grid1”的控件“XXXX”必须放在具有 runat=server 的窗体标记内. 注:Grid1为表格的ID. 查找网上的解决大致为: 1)把Grid放到<form runat= ...

  6. 事件监听:诀别Android繁琐的事件注册机制——view.setOnXXXXListener

    本版本为1.0,支持较少,使用不够方便.相关封装逻辑结构已升级至2.0,详情可参见:更完善的安卓事件监听实现 先简单扯两句这几天学习下来对java事件监听机制的一点感触.客观地讲,java的事件监听机 ...

  7. C#调用进程

    Process process = new Process(); process.StartInfo.FileName = "123.exe"; process.StartInfo ...

  8. PHP 日期格式化 参数参考

    a - "am" 或是 "pm" A - "AM" 或是 "PM" d - 几日,二位数字,若不足二位则前面补零; 如: ...

  9. 《那些事之Log4j》什么是log4j?【专题一】

    Log4j 简介 在应用程序中添加日志记录总的来说基于三个目的: 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作: 跟踪代码运行时轨迹,作为日后审计的依据: 担当集成开发环境 ...

  10. dedecms友情链接flink的调用方法

    标记名称:flink[标签简介][功能说明]:用于获取友情链接,其对应后台文件为"includetaglibflink.lib.php".[适用范围]:全局标记,适用V55,V56 ...