2013年10月21日月曜日

PyQtでcheckboxのリストを作成

PyQtでチェックボックスのリストを作成した。
いままでだとVBoxLayoutなんかでWidgetを追加していたけど、今回はQListViewQStandardItem, QStandardItemModelというのを使って行った。StackOverflowを参考にした。少しスマートにできた気がした。


from PyQt4 import QtGui, QtCore
import sys


class MyItemModel(QtGui.QStandardItemModel):
 def __init__(self, parent=None):
  super(QtGui.QStandardItemModel, self).__init__(parent)
  for i in xrange(10):
   item = QtGui.QStandardItem("item%d" % i)
   item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
     item.setData(QtCore.QVariant(QtCore.Qt.Checked), QtCore.Qt.CheckStateRole)
     self.appendRow(item)

    self.itemChanged.connect(self.printState)

   def printState(self):
    states = []
    for i in xrange(self.rowCount()):
     states.append(self.item(i).checkState())
    print states


      
class MainWindow(QtGui.QMainWindow):
 def __init__(self, parent=None):
  super(MainWindow, self).__init__(parent)
  self.model = MyItemModel(self)
    view = QtGui.QListView(self)
    view.setModel(self.model)
    self.setCentralWidget(view)  

def main(args):
    app = QtGui.QApplication(sys.argv)
    form = MainWindow()
    form.show()
    
    sys.exit(app.exec_())

    
    
if __name__ == "__main__":
    main(sys.argv)


0 件のコメント:

コメントを投稿