#!/usr/bin/env python from PyQt4.QtCore import * from PyQt4.QtGui import * import psycopg2 class ListWidgetTest(QDialog): def __init__(self, parent=None): super(ListWidgetTest, self).__init__(parent) self.listWidget = QListWidget() self.button= QPushButton() self.checkBox = QCheckBox() self.checkBox.setChecked(False) layout = QVBoxLayout() layout.addWidget(self.listWidget) layout.addWidget(self.button) layout.addWidget(self.checkBox) self.setLayout(layout) self._list = [] self.booolean= False self.listWidget.itemClicked.connect(self.on_list_selected) self.button.clicked.connect(self.on_button_clicked) self.checkBox.stateChanged.connect(self.on_all_selected) try: conn = psycopg2.connect("dbname='qgis_db' user='postgres' host='localhost' password='postgresql'") except Exception as e: print "I am unable to connect to the database", e cur = conn.cursor() conn.set_isolation_level(0) try: cur.execute("select pt_projname from point group by pt_projname") except psycopg2.ProgrammingError as e: print e self.project =cur.fetchall() self.item = QListWidgetItem() proj=['2','3','4'] #cur.execute("insert into point (pt_projname)values ('TEST')") for i in self.project: self.item = QListWidgetItem((i[0])) self.item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) self.item.setCheckState(Qt.Unchecked) self.item.setSelected(True) self.listWidget.insertItem(0,self.item) def on_list_selected(self,item): if item.checkState() == Qt.Checked: print('"%s" Checked' % item.text()) self._list.append(item.text()) def on_button_clicked(self,item): print self._list def on_all_selected(self,state): self.boolean= (state == Qt.Checked) if self.boolean == True: for i in self.project: item = self.listWidget.takeItem(self.listWidget.currentRow()) self.item = QListWidgetItem((i[0])) self.item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) self.item.setCheckState(Qt.Checked) self.item.setSelected(False) self.listWidget.insertItem(0,self.item) self._list.append(item.text()) else : for i in self.project: item = self.listWidget.takeItem(self.listWidget.currentRow()) self.item = QListWidgetItem((i[0])) self.item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) self.item.setCheckState(Qt.Unchecked) self.item.setSelected(True) self.listWidget.insertItem(0,self.item) self._list.remove(item.text()) if __name__ == "__main__": import sys app = QApplication(sys.argv) dialog = ListWidgetTest() dialog.show() app.exec_()