mardi 31 mars 2015

get index of selected checkbox in pyqt4

This is my code.. I need to get the index of the selected checkbox. I don't know how to add index to both checkbox and list item.. Actually i need to get the list item of selected checkbox.. So I think it may possible after get the index of checkbox.. Please help me.. I'm new to PyQt..



from PyQt4 import QtGui, QtCore
from PyQt4.Qt import SIGNAL, SLOT, QMainWindow, qApp, QUrl, QImage,\
QStringListModel
from PyQt4.QtCore import Qt
import sys
import os

class ThumbListWidget(QtGui.QListWidget):

def __init__(self, type, parent=None):
super(ThumbListWidget, self).__init__(parent)
self.setIconSize(QtCore.QSize(124, 124))
self.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
self.setAcceptDrops(True)
self.setSelectionRectVisible(True)

def keyPressEvent(self, event):

if event.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 event.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 Dialog(QtGui.QMainWindow):

def __init__(self):
super(QtGui.QMainWindow, self).__init__()
self.listItems = {}

myQWidget = QtGui.QWidget()
myBoxLayout = QtGui.QVBoxLayout()
myQWidget.setLayout(myBoxLayout)
self.setCentralWidget(myQWidget)

self.listWidgetA = ThumbListWidget(self)
for i in range(5):
QtGui.QListWidgetItem('Item ' + str(i + 1), self.listWidgetA)

for item in self.listWidgetA.iterAllItems():
item.setFlags(item.flags() | Qt.ItemIsUserCheckable)
item.setCheckState(Qt.UnChecked)

myBoxLayout.addWidget(self.listWidgetA)
self.listWidgetA.setAcceptDrops(False)
self.listWidgetA.viewport().update()

if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
dialog = Dialog()
dialog.show()
dialog.resize(400, 140)
sys.exit(app.exec_())


Please help me..





Aucun commentaire:

Enregistrer un commentaire