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)
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()
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()