class QDataFrameTableView(QTableView):

    def __init__(self, model, parent=None, **kwds):
        super(QDataFrameTableView, self).__init__(parent=parent, **kwds)
        self.model = model
        self.setModel(model)
        self._setup_scrolling()
        self._setup_headers()

    def _setup_scrolling(self):
        self.setVerticalScrollMode(QAbstractItemView.ScrollPerItem)
        self.setHorizontalScrollMode(QAbstractItemView.ScrollPerItem)

    def _setup_headers(self):
        self.vheader = QHeaderView(Qt.Vertical)
        self.setVerticalHeader(self.vheader)
        self.vheader.setResizeMode(QHeaderView.Fixed)
        self.vheader.setDefaultSectionSize(20)
        self.hheader = self.horizontalHeader()
        self.hheader.setMovable(True)

    def save_state(self):
        return self.hheader.saveState()

    def set_state(self, state):
        self.hheader.restoreState(state)
Beispiel #2
0
class QDataFrameTableView(QTableView):
    """ View a pandas DataFrame in a table.
    """

    def __init__(self, df_model, parent=None, **kwds):
        super(QDataFrameTableView, self).__init__(parent=parent, **kwds)
        self.df_model = df_model
        self.setModel(df_model)
        self._setup_sorting()
        self._setup_selection()
        self._setup_scrolling()
        self._setup_headers()
        self._setup_style()

        self.setRowHeight(1.0,1.0)

    @classmethod
    def from_data_frame(cls, df, **kwds):
        """ Instantiate a DataFrameTableView directly from a DataFrame.
        """
        df_model = QDataFrameModel(df)
        self = cls(df_model, **kwds)
        return self

    def _setup_sorting(self):
        self.sortByColumn(-1, Qt.AscendingOrder)
        self.setSortingEnabled(True)

    def _setup_selection(self):
        self.selection_model = self.selectionModel()
        self.setSelectionMode(QAbstractItemView.ContiguousSelection)
        self.setSelectionBehavior(QAbstractItemView.SelectItems)

    def _setup_scrolling(self):
        self.setVerticalScrollMode(QAbstractItemView.ScrollPerItem)

    def _setup_headers(self):
        self.vheader = QHeaderView(Qt.Vertical)
        self.setVerticalHeader(self.vheader)
        font = self.vheader.font()
        font.setBold(True)
        fmetrics = QFontMetrics(font)
        max_width = fmetrics.width(u" {0} ".format(
            unicode(self.df_model.rowCount())))
        self.vheader.setMinimumWidth(max_width)
        self.vheader.setClickable(True)
        self.vheader.setStretchLastSection(False)
        self.vheader.setResizeMode(QHeaderView.Fixed)

        self.hheader = self.horizontalHeader()
        self.hheader.setStretchLastSection(False)
        self.hheader.setClickable(True)
        self.hheader.setMovable(True)

    def _setup_style(self):
        self.setWordWrap(False)
 def _setup_headers(self):
     self.vheader = QHeaderView(Qt.Vertical)
     self.setVerticalHeader(self.vheader)
     self.vheader.setResizeMode(QHeaderView.Fixed)
     self.vheader.setDefaultSectionSize(20)
     self.hheader = self.horizontalHeader()
     self.hheader.setMovable(True)
class QDataFrameTableView(QTableView):

    def __init__(self, model, parent=None, **kwds):
        super(QDataFrameTableView, self).__init__(parent=parent, **kwds)
        self.model = model
        self.setModel(model)
        self._setup_scrolling()
        self._setup_headers()

    def _setup_scrolling(self):
        self.setVerticalScrollMode(QAbstractItemView.ScrollPerItem)
        self.setHorizontalScrollMode(QAbstractItemView.ScrollPerItem)

    def _setup_headers(self):
        self.vheader = QHeaderView(Qt.Vertical)
        self.setVerticalHeader(self.vheader)
        self.vheader.setResizeMode(QHeaderView.Fixed)
        self.hheader = self.horizontalHeader()
Beispiel #5
0
    def _setup_headers(self):
        self.vheader = QHeaderView(Qt.Vertical)
        self.setVerticalHeader(self.vheader)
        font = self.vheader.font()
        font.setBold(True)
        fmetrics = QFontMetrics(font)
        max_width = fmetrics.width(u" {0} ".format(
            unicode(self.df_model.rowCount())))
        self.vheader.setMinimumWidth(max_width)
        self.vheader.setClickable(True)
        self.vheader.setStretchLastSection(False)
        self.vheader.setResizeMode(QHeaderView.Fixed)

        self.hheader = self.horizontalHeader()
        self.hheader.setStretchLastSection(False)
        self.hheader.setClickable(True)
        self.hheader.setMovable(True)
 def _setup_headers(self):
     self.vheader = QHeaderView(Qt.Vertical)
     self.setVerticalHeader(self.vheader)
     self.vheader.setResizeMode(QHeaderView.Fixed)
     self.hheader = self.horizontalHeader()