def __init__(self, *args, **kwargs): QWidget.__init__(self, *args, **kwargs) self.setLayout(QVBoxLayout()) tv1 = QTableView(self) tv2 = QTableView(self) model = QStandardItemModel(8, 4, self) proxy = SortFilterProxyModel(self) proxy.setSourceModel(model) tv1.setModel(model) tv2.setModel(proxy) self.layout().addWidget(tv1) self.layout().addWidget(tv2) for i in range(model.rowCount()): for j in range(model.columnCount()): item = QStandardItem() item.setData(random_word(), Qt.DisplayRole) model.setItem(i, j, item) flayout = QFormLayout() self.layout().addLayout(flayout) for i in range(model.columnCount()): le = QLineEdit(self) flayout.addRow("column: {}".format(i), le) le.textChanged.connect(lambda text, col=i: proxy.setFilterByColumn( QRegExp(text, Qt.CaseSensitive, QRegExp.FixedString), col))
def _init_widget_and_widget(self): '''初始化窗口布局 @参数说明: 无 @返回值: 无 @注意: 无 ''' self.original_table_view = QTableView() self.result_table_view = QTableView() self.original_graphics = modify_graphics.ModifyQGraphicsView() self.result_graphics = modify_graphics.ModifyQGraphicsView() self.ui.horizontal_layout = QHBoxLayout(self.ui.show_result) self.ui.vertical_layout_1 = QVBoxLayout() self.ui.vertical_layout_2 = QVBoxLayout() self.ui.vertical_layout_1.addWidget(self.original_graphics) self.ui.vertical_layout_1.addWidget(self.original_table_view) self.ui.vertical_layout_1.setStretch(0, 2) self.ui.vertical_layout_1.setStretch(1, 1) self.ui.vertical_layout_2.addWidget(self.result_graphics) self.ui.vertical_layout_2.addWidget(self.result_table_view) self.ui.vertical_layout_2.setStretch(0, 2) self.ui.vertical_layout_2.setStretch(1, 1) self.ui.horizontal_layout.addLayout(self.ui.vertical_layout_1) self.ui.horizontal_layout.addLayout(self.ui.vertical_layout_2)
def showdf(self, df): model = PdQtClass.pandasModel(df) view = QTableView() view.setModel(model) view.resize(800, 600) self.w = QTableView() self.w.setModel(model) self.w.resize(480, 320) self.w.show()
def testReferenceCounting(self): '''Tests reference count of model object referred by view objects.''' model1 = TestModel() refcount1 = getrefcount(model1) view1 = QTableView() view1.setModel(model1) self.assertEqual(getrefcount(view1.model()), refcount1 + 1) view2 = QTableView() view2.setModel(model1) self.assertEqual(getrefcount(view2.model()), refcount1 + 2) model2 = TestModel() view2.setModel(model2) self.assertEqual(getrefcount(view1.model()), refcount1 + 1)
def __init__(self, type: np.dtype = np.byte, parent=None): super().__init__(parent) self.model = ArrayDatasetTableModel(dtype=type, parent=self) self.view = QTableView() self.view.setModel(self.model) self.view.setSelectionMode(QAbstractItemView.SingleSelection) self.view.setItemDelegate(ValueDelegate(type, parent)) self.setLayout(QGridLayout()) self.toolbox = QToolBar() self.add_row_button = QAction(text="➕ Add Row") self.add_row_button.triggered.connect(self.model.add_row) self.remove_row_button = QAction(text="➖ Remove Row") self.remove_row_button.triggered.connect( partial(self.model.delete_index, True)) self.add_column_button = QAction(text="➕ Add Column") self.add_column_button.triggered.connect(self.model.add_column) self.remove_column_button = QAction(text="➖ Remove Column") self.remove_column_button.triggered.connect( partial(self.model.delete_index, False)) self.toolbox.addAction(self.add_row_button) self.toolbox.addAction(self.remove_row_button) self.toolbox.addAction(self.add_column_button) self.toolbox.addAction(self.remove_column_button) self.layout().addWidget(self.toolbox) self.layout().addWidget(self.view)
def __init__(self): super().__init__() self.table = QTableView() self.model = QSqlTableModel(db=db) self.table.setModel(self.model) # tag::titles[] self.model.setTable("Track") column_titles = { "Name": "Name", "AlbumId": "Album (ID)", "MediaTypeId": "Media Type (ID)", "GenreId": "Genre (ID)", "Composer": "Composer", } for n, t in column_titles.items(): idx = self.model.fieldIndex(n) self.model.setHeaderData(idx, Qt.Horizontal, t) self.model.select() # end::titles[] self.model.select() self.setMinimumSize(QSize(1024, 600)) self.setCentralWidget(self.table)
def __init__(self, db=0, mode=0): super().__init__() layout = QGridLayout() #self.central_widget.setLayout(layout) self.resize(800, self.height()) self.lb_find = QInvisibleButton('Поиск') self.lb_find.setFont(mainfont) self.te_find = QLineEdit() self.te_find.setFont(mainfont) self.pid = 0 layout.addWidget(self.te_find, 0, 0, 1, 1) layout.addWidget(self.lb_find, 0, 0, 1, 1) #if mode: # te.setReadOnly(False) self.lb_find.clicked.connect(self.button_pressed) self.te_find.returnPressed.connect(self.line_edit_return_pressed) self.database = db self.table = QTableView() # Создаём таблицу self.table.doubleClicked.connect(self.viewPerson) #self.table = table self.model = TableModel(self.database.get_peoples()) self.table.setModel(self.model) self.table.resizeRowsToContents() self.table.setSelectionBehavior(QAbstractItemView.SelectRows) #self.table.setSelectionMode(QAbstractItemView.SingleSelection); self.model.dataChanged.connect(self.table.update) layout.addWidget(self.table) self.setLayout(layout)
def __init__(self): super(MainWindow, self).__init__() self.resize(1024, 600) wood_model = WoodModel(list(db.get_all_wood_records())) main_layout = QVBoxLayout() table_view = QTableView(self) table_view.setModel(wood_model) main_layout.addWidget(table_view) text_edit = QTextEdit(self) main_layout.addWidget(text_edit) message_label = QLabel("", self) main_layout.addWidget(message_label) add_button = QPushButton("Add", self) main_layout.addWidget(add_button) self.setLayout(main_layout) def on_add(value): records_to_add = text_edit.toPlainText().split("\n") for record_to_add in records_to_add: columns = record_to_add.split("\t") try: wood = db.Wood.from_text_columns(columns) db.add_wood_record(wood) wood_model.add_wood(wood) except db.DwellingException as e: print(e.message) message_label.setText(e.message) text_edit.clear() add_button.clicked.connect(on_add)
def __init__(self, *args): super().__init__() self.setFixedSize(930, 631) self.setLocale(QLocale(QLocale.English, QLocale.UnitedStates)) self.setWindowTitle( QCoreApplication.translate("MainWindow", "PyInspect")) self.central_widget = QWidget(self) self.comboBox = QComboBox(self.central_widget) self.comboBox.setGeometry(QRect(10, 10, 451, 22)) self.comboBox.setMouseTracking(False) self.comboBox.setMaxVisibleItems(5) self.comboBox.setObjectName("comboBox") for _backend in backend.registry.backends.keys(): self.comboBox.addItem(_backend) self.tree_view = QTreeView(self.central_widget) self.tree_view.setGeometry(QRect(10, 40, 451, 581)) self.tree_view.setColumnWidth(0, 150) self.comboBox.setCurrentText('uia') self.__show_tree() self.table_view = QTableView(self.central_widget) self.table_view.setGeometry(QRect(470, 40, 451, 581)) self.comboBox.activated[str].connect(self.__show_tree) self.tree_view.clicked.connect(self.__show_property)
def __init__(self): super().__init__() self.view = QTableView() self.view.horizontalHeader().hide() self.view.verticalHeader().hide() self.view.setGridStyle(Qt.NoPen) delegate = PreviewDelegate() self.view.setItemDelegate(delegate) self.model = PreviewModel() self.view.setModel(self.model) self.setCentralWidget(self.view) # Add a bunch of images. image_files = glob.glob("*.jpg") for n, fn in enumerate(image_files): image = QImage(fn) item = preview(n, fn, image) self.model.previews.append(item) self.model.layoutChanged.emit() self.view.resizeRowsToContents() self.view.resizeColumnsToContents()
def setupTabs(self): """ Setup the various tabs in the AddressWidget. """ groups = ["ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VW", "XYZ"] for group in groups: proxyModel = QSortFilterProxyModel(self) proxyModel.setSourceModel(self.tableModel) proxyModel.setDynamicSortFilter(True) tableView = QTableView() tableView.setModel(proxyModel) tableView.setSortingEnabled(True) tableView.setSelectionBehavior(QAbstractItemView.SelectRows) tableView.horizontalHeader().setStretchLastSection(True) tableView.verticalHeader().hide() tableView.setEditTriggers(QAbstractItemView.NoEditTriggers) tableView.setSelectionMode(QAbstractItemView.SingleSelection) # This here be the magic: we use the group name (e.g. "ABC") to # build the regex for the QSortFilterProxyModel for the group's # tab. The regex will end up looking like "^[ABC].*", only # allowing this tab to display items where the name starts with # "A", "B", or "C". Notice that we set it to be case-insensitive. reFilter = "^[%s].*" % group proxyModel.setFilterRegExp(QRegExp(reFilter, Qt.CaseInsensitive)) proxyModel.setFilterKeyColumn(0) # Filter on the "name" column proxyModel.sort(0, Qt.AscendingOrder) # This prevents an application crash (see: http://www.qtcentre.org/threads/58874-QListView-SelectionModel-selectionChanged-Crash) viewselectionmodel = tableView.selectionModel() tableView.selectionModel().selectionChanged.connect( self.selectionChanged) self.addTab(tableView, group)
def __init__(self): QWidget.__init__(self) self.model = CustomTableModel() self.table_view = QTableView() self.table_view.setModel(self.model) self.table_view.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) self.table_view.verticalHeader().setSectionResizeMode( QHeaderView.Stretch) self.chart = QtCharts.QChart() self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations) self.series = QtCharts.QLineSeries() self.series.setName("Line 1") self.mapper = QtCharts.QVXYModelMapper(self) self.mapper.setXColumn(0) self.mapper.setYColumn(1) self.mapper.setSeries(self.series) self.mapper.setModel(self.model) self.chart.addSeries(self.series) # for storing color hex from the series seriesColorHex = "#000000" # get the color of the series and use it for showing the mapped area seriesColorHex = "{}".format(self.series.pen().color().name()) self.model.add_mapping(seriesColorHex, QRect(0, 0, 2, self.model.rowCount())) # series 2 self.series = QtCharts.QLineSeries() self.series.setName("Line 2") self.mapper = QtCharts.QVXYModelMapper(self) self.mapper.setXColumn(2) self.mapper.setYColumn(3) self.mapper.setSeries(self.series) self.mapper.setModel(self.model) self.chart.addSeries(self.series) # get the color of the series and use it for showing the mapped area seriesColorHex = "{}".format(self.series.pen().color().name()) self.model.add_mapping(seriesColorHex, QRect(2, 0, 2, self.model.rowCount())) self.chart.createDefaultAxes() self.chart_view = QtCharts.QChartView(self.chart) self.chart_view.setRenderHint(QPainter.Antialiasing) self.chart_view.setMinimumSize(640, 480) # create main layout self.main_layout = QGridLayout() self.main_layout.addWidget(self.table_view, 1, 0) self.main_layout.addWidget(self.chart_view, 1, 1) self.main_layout.setColumnStretch(1, 1) self.main_layout.setColumnStretch(0, 0) self.setLayout(self.main_layout)
def __init__(self, conn=None, parent=None): super().__init__(parent) self.conn = conn self.view = QTableView() self.model = MetricModel() self.buttons = QDialogButtonBox(QDialogButtonBox.Ok) self.view.setModel(self.model) self.view.setAlternatingRowColors(True) self.view.horizontalHeader().hide() self.view.verticalHeader().hide() self.view.setSelectionMode(QAbstractItemView.SingleSelection) self.view.setSelectionBehavior(QAbstractItemView.SelectRows) self.buttons.accepted.connect(self.accept) self.setWindowTitle(self.tr("Project metrics")) v_layout = QVBoxLayout() v_layout.addWidget(self.view) v_layout.addWidget(self.buttons) self.setLayout(v_layout) # Async stuff self.metrics_runnable = None self.populate()
def __init__(self, parent=None): super().__init__(parent) self._workbench: WorkbenchModel = None sideWidget = QWidget(self) sideLayout = QVBoxLayout() self.CBL = QComboBox(sideWidget) self.CBR = QComboBox(sideWidget) self.columnsL = SearchableAttributeTableWidget(sideWidget, True, showTypes=True) self.columnsR = SearchableAttributeTableWidget(sideWidget, True, showTypes=True) button = QPushButton('Compute diff', self) sideLayout.addWidget(self.CBL) sideLayout.addWidget(self.columnsL) sideLayout.addWidget(self.CBR) sideLayout.addWidget(self.columnsR) sideLayout.addWidget(button) sideWidget.setLayout(sideLayout) self.tableWidget = QTableView(self) splitter = QSplitter(self) splitter.addWidget(sideWidget) splitter.addWidget(self.tableWidget) layout = QHBoxLayout(self) layout.addWidget(splitter) self.CBL.currentTextChanged.connect(self.setAttributeModelL) self.CBR.currentTextChanged.connect(self.setAttributeModelR) button.clicked.connect(self.computeDiff)
def view_fit_grains_results(self): for result in self.fit_grains_results: print(result) # Build grains table num_grains = len(self.fit_grains_results) shape = (num_grains, 21) grains_table = np.empty(shape) gw = instrument.GrainDataWriter(array=grains_table) for result in self.fit_grains_results: gw.dump_grain(*result) gw.close() # Display grains table in popup dialog dialog = QDialog(self.parent) dialog.setWindowTitle('Fit Grains Results') model = FitGrainsResultsModel(grains_table, dialog) view = QTableView(dialog) view.setModel(model) view.verticalHeader().hide() view.resizeColumnToContents(0) layout = QVBoxLayout(dialog) layout.addWidget(view) dialog.setLayout(layout) dialog.resize(960, 320) dialog.exec_()
def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle('Desktop application') self._label = QLabel('Collection', self) self._open_button = QPushButton('Open') self._open_button.setToolTip('Choose the collection database') self._add_button = QPushButton('Add') self._add_button.setToolTip('Add a new entry into the collection') self._model = None self._view = QTableView(self) horizontal_layout = QHBoxLayout() horizontal_layout.addWidget(self._label) horizontal_layout.addWidget(self._open_button) horizontal_layout.addWidget(self._add_button) layout = QVBoxLayout() layout.addLayout(horizontal_layout) layout.addWidget(self._view) self.setLayout(layout) self._open_button.clicked.connect(self.__open_collection) self._add_button.clicked.connect(self.__add_new_entry)
def __init__(self, data): QWidget.__init__(self) self.model = CustomTableModel(data) self.table_view = QTableView() self.table_view.setModel(self.model) self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.table_view.verticalHeader().setSectionResizeMode(QHeaderView.Stretch) self.table_view.setMinimumSize(400, 600) self.chart = QtCharts.QChart() self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations) self.init_data() self.chart.createDefaultAxes() self.chart_view = QtCharts.QChartView(self.chart) self.chart_view.setRenderHint(QPainter.Antialiasing) self.chart_view.setMinimumSize(800, 600) # create main layout self.main_layout = QGridLayout() self.main_layout.addWidget(self.table_view, 1, 0) self.main_layout.addWidget(self.chart_view, 1, 1) self.main_layout.setColumnStretch(1, 2) self.main_layout.setColumnStretch(0, 1) self.setLayout(self.main_layout)
def __init__(self, parent=None): super().__init__() self.setWindowTitle("Родословная") self.resize(800, self.height()) self.distance = 1000 self.central_widget = QWidget() self.setCentralWidget(self.central_widget) layout = QGridLayout() self.central_widget.setLayout(layout) self.lb_find = QInvisibleButton('Поиск') self.lb_find.setFont(mainfont) self.te_find = QLineEdit() self.te_find.setFont(mainfont) layout.addWidget(self.te_find, 0, 0, 1, 1) layout.addWidget(self.lb_find, 0, 0, 1, 1) #if mode: # te.setReadOnly(False) self.lb_find.clicked.connect(self.button_pressed) self.te_find.returnPressed.connect(self.line_edit_return_pressed) self.table = QTableView() # Создаём таблицу self.table.doubleClicked.connect(self.viewPerson) layout.addWidget(self.table) self.table.setFocus() timer = QTimer(self) timer.singleShot(0, self.async_init)
def __init__(self, model): QDialog.__init__(self) self.resize(QSize(1081, 750)) self.model = model self.tableViewPodgladDanych = QTableView(self) self.tableViewPodgladDanych.resize(QSize(1070, 740)) self.tableViewPodgladDanych.setModel(model)
def __init__(self): """ Widget containing the table summary of all attributes """ QWidget.__init__(self) # Data self.attributes = {} # Attributes names to ids -> {attr_name: attr_id, ...} self.attr_idx = {} # Attributes ids to indexes -> {attr_id: attr_idx, ...} self.students = {} # Students names to ids -> {std_name: std_id, ...} self.std_idx = {} # Students ids to indexes -> {std_id: std_idx, ...} self.data = {} # Attributes and students ids to cell data -> {(attr_id, std_id): cell_data, ...} self.dm: AttributesTableModel = None # Widget self.table_attributes = QTableView() self.table_attributes.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table_attributes.setSelectionMode(QAbstractItemView.SingleSelection) self.table_attributes.verticalHeader().setSectionResizeMode(QHeaderView.Fixed) self.table_attributes.verticalHeader().setFixedWidth(150) # Signals self.table_attributes.clicked.connect(self.on_cell_clicked) self.sig_cell_clicked: Signal = None # Layout self.__set_layout() self.set_data([], [], {})
def init_ui(self, data): self.model = Dicom_TagsModel(data) self.view = QTableView() self.view.setModel(self.model) layout = QHBoxLayout(self) layout.addWidget(self.view)
def __init__(self, parent=None): super(VernierUpdate, self).__init__(parent) wl_coarse = np.linspace(1480, 1600, 60001) self.fig_coarse = FigureWithToolbar(width=7, height=4) self.fig_coarse.set_limits(ylim=(-30, 5), auto_x=True, auto_y=False) self.fig_coarse.set_labels('Wavelength [nm]', 'Transmission [dB]') self.fig_coarse.plot_line(wl_coarse, np.zeros_like(wl_coarse), label='Vernier') wl_fine = np.linspace(1540, 1541, 201) self.fig_fine = FigureWithToolbar(width=7, height=4) self.fig_fine.set_limits(ylim=(-1, 0), auto_x=True, auto_y=False) self.fig_fine.set_labels('Wavelength [nm]', 'Transmission [dB]') self.fig_fine.plot_line(wl_fine, np.zeros_like(wl_fine), label='MRR1') self.fig_fine.plot_line(wl_fine, np.zeros_like(wl_fine), label='MRR2') self.fig_fine.plot_line(wl_fine, np.zeros_like(wl_fine), label='Vernier') self.peaks_model = PandasModel( pd.DataFrame({ 'Peak wl [nm]': np.full((5, ), fill_value=np.nan), 'Peak lvl [dB]': np.full((5, ), fill_value=np.nan) })) self.peaks_table = QTableView() self.peaks_table.setModel(self.peaks_model) self.peaks_table.setMinimumWidth(160) layout = QHBoxLayout() layout.addWidget(self.fig_coarse) layout.addWidget(self.fig_fine) layout.addWidget(self.peaks_table) self.setLayout(layout)
def testSetModel(self): model = VirtualList() model._getItemCalled = False table = QTableView() table.setModel(model) table.show() self.assertFalse(model._getItemCalled)
def __init__(self): super(Window, self).__init__() self.table = QTableView() self.sti = QStandardItemModel() self.sti.setColumnCount(3) self.table.setModel(self.sti) self.sti.setRowCount(8) #piersza możliwośc przez QStandardItem # item1 = QStandardItem('Red') # item1.setBackground(QBrush(Qt.red)) # self.sti.setHorizontalHeaderItem(1, item1) #Druga możliwosć przez odwołanie modelu: self.table.model().setHeaderData(0, Qt.Horizontal, QBrush(QColor(121, 166, 210)), Qt.BackgroundRole) self.table.model().setHeaderData(0, Qt.Horizontal, "One", Qt.DisplayRole) self.mlayout = QHBoxLayout() self.mlayout.addWidget(self.table) self.setLayout(self.mlayout)
def __init__(self, data): QWidget.__init__(self) #Getting the Model self.model = CustomTableModel(data) #Creating a QTableView self.table_view = QTableView() self.table_view.setModel(self.model) #QTableView Headers self.horizontal_header = self.table_view.horizontalHeader() self.vertical_header = self.table_view.verticalHeader() self.horizontal_header.setSectionResizeMode( QHeaderView.ResizeToContents) self.vertical_header.setSectionResizeMode(QHeaderView.ResizeToContents) self.horizontal_header.setStretchLastSection(True) #QWidget Layout self.main_layout = QHBoxLayout() size = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) #Left Layout size.setHorizontalStretch(1) self.table_view.setSizePolicy(size) self.main_layout.addWidget(self.table_view) # Set layout to QWidget self.setLayout(self.main_layout)
def __init__(self): QWidget.__init__(self) # Creating a QTableView self.table_view = QTableView() # QWidget Layout self.main_layout = QHBoxLayout() self.size = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) # generate the plot self.fig, self.ax = plt.subplots() self.fig.tight_layout = True self.fig.subplots_adjust(left=0.05, right=0.95, top=0.95, bottom=0.05) self.ax.margins(0, 0) self.canvas = FigureCanvas(self.fig) ## Left layout self.size.setHorizontalStretch(1) self.table_view.setSizePolicy(self.size) self.main_layout.addWidget(self.table_view) ## Right Layout self.size.setHorizontalStretch(4) self.canvas.setSizePolicy(self.size) self.main_layout.addWidget(self.canvas) # Creating QChartView self.chart_view = QtCharts.QChartView() self.chart_view.setRenderHint(QPainter.Antialiasing) # Set the layout to the QWidget self.setLayout(self.main_layout)
def __init__(self, parent, option, index): """Initialize class.""" super().__init__(parent) layout = QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self.model = MinimalTableModel(self) self.model.flags = self.model_flags self.view = QTableView(self) self.view.setModel(self.model) self.view.verticalHeader().hide() self.view.horizontalHeader().hide() self.view.setShowGrid(False) check_box_delegate = CheckBoxDelegate(self) self.view.setItemDelegateForColumn(0, check_box_delegate) check_box_delegate.data_committed.connect( self._handle_check_box_data_committed) self.button = QPushButton("Ok", self) self.button.setFlat(True) self.view.verticalHeader().setDefaultSectionSize(option.rect.height()) self.button.setFixedHeight(option.rect.height()) layout.addWidget(self.view) layout.addWidget(self.button) self.button.clicked.connect(self._handle_ok_button_clicked) self.setWindowFlags(Qt.FramelessWindowHint | Qt.Popup) x_offset = parent.parent().columnViewportPosition(index.column()) y_offset = parent.parent().rowViewportPosition(index.row()) self.position = parent.mapToGlobal(QPoint(0, 0)) + QPoint( x_offset, y_offset)
def get_view_for_submodel(submodel): main_widget = QWidget() hbox_layout = QHBoxLayout(main_widget) vbox_layout = QVBoxLayout() table_view = QTableView() table_view.setSelectionBehavior(QAbstractItemView.SelectRows) table_view.setSelectionMode(QAbstractItemView.SingleSelection) table_view.setModel(submodel) add_button = QPushButton("+") add_button.clicked.connect(lambda: add_item_to_model(submodel)) remove_button = QPushButton("-") remove_button.clicked.connect( lambda: remove_item_from_model(submodel, table_view)) vbox_layout.addWidget(add_button) vbox_layout.addWidget(remove_button) vbox_layout.addItem( QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)) hbox_layout.addWidget(table_view) hbox_layout.addLayout(vbox_layout) return main_widget
def __init__(self, parent, name, data): if not type(data) == binaryninja.binaryview.BinaryView: raise Exception('expected widget data to be a BinaryView') self.bv = data QWidget.__init__(self, parent) DockContextHandler.__init__(self, self, name) self.actionHandler = UIActionHandler() self.actionHandler.setupActionHandler(self) self.table = QTableView(self) self.model = DebugModulesListModel(self.table, data) self.table.setModel(self.model) self.item_delegate = DebugModulesItemDelegate(self) self.table.setItemDelegate(self.item_delegate) # self.table.setSortingEnabled(True) self.table.setSelectionBehavior( QAbstractItemView.SelectionBehavior.SelectRows) self.table.setSelectionMode(QAbstractItemView.ExtendedSelection) self.table.verticalHeader().setSectionResizeMode( QHeaderView.ResizeToContents) self.table.verticalHeader().setVisible(False) self.table.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel) self.table.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel) self.table.resizeColumnsToContents() self.table.resizeRowsToContents() for i in range(len(self.model.columns)): self.table.setColumnWidth( i, self.item_delegate.sizeHint( self.table.viewOptions(), self.model.index(-1, i, QModelIndex())).width()) update_layout = QHBoxLayout() update_layout.setContentsMargins(0, 0, 0, 0) update_label = QLabel("Data is Stale") update_button = QPushButton("Refresh") update_button.clicked.connect(lambda: self.refresh()) update_layout.addWidget(update_label) update_layout.addStretch(1) update_layout.addWidget(update_button) self.update_box = QWidget() self.update_box.setLayout(update_layout) self.layout = QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.layout.addWidget(self.table) self.setLayout(self.layout)
def _create_table_view(self, df): if df is None: df = pd.DataFrame() model = PandasModel(df) table_view = QTableView() table_view.setModel(model) table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) return table_view