pyqt 同时勾选多个items(网友提供学习)

框选多个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意味着在显示时会占据主窗口的中央位置。

"""

时间: 2024-09-30 16:01:33

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

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

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #如上图要求:创建指定多个复选框,一种是通过QT设计器Designer,这种是在知情的情况下.另一种是通过配置文件读出来,或者从数据库中取出来,还有其他情况就需要动态创建 #思路是循环列表,创建对象,插入布局,进行信号槽绑定和处理信号,通过sender()方法来获取那个对象发出的信号 from PyQt4.Qt import * from PyQt4.QtCore 

pyqt之类listviw中查找内容(网友提供)

from PyQt4 import QtCore from PyQt4 import QtGui class SimpleListModel(QtCore.QAbstractListModel): def __init__(self, contents): super(SimpleListModel, self).__init__() self.contents = contents def rowCount(self, parent): return len(self.contents) de

python爬爬(网友提供学习)

import urllib2,urllib,os,re def ZZ(url): pathw=os.getcwd() #图片和标题目录 imagetitleregion=r'<div class="large-Imgs">\r\n  <img src="(.+?)" alt="(.+?)">' imagetitleRe=re.compile(imagetitleregion) #提取文件 downregion=u'<

jquery checkbox勾选/取消勾选的诡异问题

<form> 你爱好的运动是?<input type="checkbox" id="CheckedAll" />全选/全不选<br /> <input type="checkbox" name="items" value="足球" />足球 <input type="checkbox" name="items" v

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

自己在网上找了一段时间都没有找到取自数据库的值与TreeView中的节点值进行对比如匹配则勾选中CheckBox的资料,后面自己写了一个递归方法实现,现在记录起来以备需要时使用.在没写这递归方法前如果需要一个一个对比深度为4的TreeView 需要不少于5个for循环,写太多内嵌的for循环觉得不好,因此写了以下的方法. /// <summary> /// 递归实现与TreeView节点值对比,如相同则该节点的CheckBox=True /// </summary> /// <

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

jquery checkbox勾选/取消勾选的诡异问题jquery checkbox勾选/取消勾选的诡异问题 <form>        你爱好的运动是?<input type="checkbox" id="CheckedAll" />全选/全不选<br />        <input type="checkbox" name="items" value="足球"

ExtJs实现复选框组Checkboxgroup单勾选及复选框组对多个复选框组跨控件全选

ExtJs实现复选框Checkboxgroup单勾选及跨控件全选 由于项目的需要,我们要将EXT的控件Checkboxgroup复选框组改造成但勾选,并且实现一个复选框组控制其他多个复选框组的全选,以下是关于如何实现的代码片段. 1.创建CheckboxGroup对象 1,新建空的EOS6.5的工程,新建com.towngas.tcis. gridlock构件包: 2,在com.towngas.tcis.gridlock构件包的"展现"节点下的"页面资源"节点中创建

vue-devtools安装以后,勾选了“允许访问文件网址”之后还是无法使用

勾选了"允许访问文件网址",还是无法使用: Vue.js is detected on this page. Devtools inspection is not available because it's in production mode or explicitly disabled by the author 在vue-devtools的github中有这样一句说明: If the page uses a production/minified build of Vue.js

前端checkbox默认勾选状态的判断

最近迭代版本的 加了一个新功能 每一条数据有一个checkbox 然后后端传过来的是 每条数据的名字的字符串 并不是ID 然后根据名字去给他加默认有勾选状态或者没有勾选状态 input.checked = (给你传的名字.indexOf(每一条数据的名字)<0) 当然 checked的值 只是ture 或者false 你还需要在其他地方判断一下 if(checked){ <input type="checkbox" checked class="campaigng