def __init__(self): QTreeWidget.__init__(self) self.oldWidth = 0 self.oldHeight = 0 self.queueInitialPresentation = False
def create_ui(self): fields_label = QLabel(_("Class fields"), self) self.layout.addWidget(fields_label, 0, 0) self._fields_tree = QTreeWidget(self) fields_label.setBuddy(self._fields_tree) self._fields_tree.currentItemChanged.connect( self.on_fields_tree_sel_changed) self.layout.addWidget(self._fields_tree, 1, 0) operator_label = QLabel(_("Operator"), self) self.layout.addWidget(operator_label, 0, 1) self._operator = QListWidget(self) operator_label.setBuddy(self._operator) self.layout.addWidget(self._operator, 1, 1) self._operator.currentRowChanged.connect(self.on_operator_choice) self._operator.setCurrentRow(0) add_button = QPushButton(_("&Add condition"), self) add_button.clicked.connect(self.on_add_clicked) self.layout.addWidget(add_button, 2, 0, 1, 3) criteria_label = QLabel(_("Current search criteria"), self) self.layout.addWidget(criteria_label, 3, 0, 1, 3) self._criteria_list = QListWidget(self) criteria_label.setBuddy(self._criteria_list) self.layout.addWidget(self._criteria_list, 4, 0, 1, 3) remove_button = QPushButton(_("&Remove condition"), self) remove_button.clicked.connect(self.on_remove_clicked) self.layout.addWidget(remove_button, 5, 0, 1, 3) distance_label = QLabel(_("Search objects to distance"), self) self.layout.addWidget(distance_label, 6, 0) self._distance_field = QSpinBox(self) self._distance_field.setMaximum(100000) self._distance_field.setSuffix(" " + _("meters")) self._distance_field.setSpecialValueText(_("No limit")) distance_label.setBuddy(self._distance_field) self.layout.addWidget(self._distance_field, 6, 1)
def __init__(self, path, settings, session): QWidget.__init__(self) ABookCore.__init__(self, path, settings, session) self.signal = CourseTreeWidgetSignals() self.selectedList = [] self.treeWidget = QTreeWidget() self.treeWidget.setHeaderLabels(['Name', "Course ID", "Chapter ID"]) self.treeWidget.itemChanged.connect(self.checkbox_toggled) self.treeWidget.clicked.connect(self.loadResourceList) self.addDownloadTaskButton = QPushButton("Add to Downloader") self.addDownloadTaskButton.clicked.connect(self.addDownloadTask) self.importCourseButton = QPushButton("Import Courses") self.importCourseButton.clicked.connect(self.startImportCourseWidget) main_layout = QGridLayout() main_layout.addWidget(self.treeWidget, 0, 0, 1, 2) main_layout.addWidget(self.importCourseButton, 1, 0) main_layout.addWidget(self.addDownloadTaskButton, 1, 1) main_layout.setMargin(0) self.setLayout(main_layout) if settings['first_launch'] is True: settings['first_launch'] = False self.importCourseButton.click() else: self.createTreeRoot()
def __init__(self, parent, title, person, unsorted_objects, autoshow=True, progress_indicator=None): super().__init__(None) act = QAction("close", self) act.triggered.connect(self._do_close) act.setShortcut(QKeySequence("escape")) self.addAction(act) layout = QGridLayout() bar = QMenuBar(self) self._object_actions = bar.addMenu(_("Object actions")) property_actions = bar.addMenu(_("Property actions")) self._create_item(property_actions, _("Copy property value"), "ctrl+c", self.on_copypropvalue_selected) self._create_item(property_actions, _("Copy property name"), "alt+c", self.on_copypropname_selected) self._create_item(property_actions, _("Copy property name and value"), "ctrl+alt+c", self.on_copypropline_selected) objects_label = QLabel(_("Objects"), self) layout.addWidget(objects_label, 0, 0) self._objects_list = QListWidget(self) self._objects_list.setAccessibleName(objects_label.text()) self._objects_list.setContextMenuPolicy(Qt.CustomContextMenu) self._objects_list.currentRowChanged.connect(self.on_objects_listbox) self._objects_list.customContextMenuRequested.connect( self._on_objects_list_menu) objects_label.setBuddy(self._objects_list) layout.addWidget(self._objects_list, 1, 0) props_label = QLabel(_("Object properties"), self) layout.addWidget(props_label, 0, 1) self._props = QTreeWidget(self) self._props.setAccessibleName(props_label.text()) props_label.setBuddy(self._props) layout.addWidget(self._props, 1, 1) goto_button = QPushButton(_("Go to"), self) goto_button.setDefault(True) goto_button.clicked.connect(self.on_goto_clicked) self._objects_list.itemActivated.connect(goto_button.click) layout.addWidget(goto_button, 2, 0) close_button = QPushButton(_("Close"), self) close_button.clicked.connect(self.close) layout.addWidget(close_button, 2, 1) self.setLayout(layout) self.setWindowTitle(title + _(" ({num_objects} objects shown)").format( num_objects=len(unsorted_objects))) self._person = person self._autoshow = autoshow self._progress_indicator = progress_indicator self._all_actions = [] for member in object_actions.__dict__.values(): if inspect.isclass(member) and issubclass(member, ObjectAction): self._all_actions.append(member) self._objects_list.setCurrentRow(0) self._sorter = ObjectsSorter(unsorted_objects, person) self._sorter.objects_sorted.connect(self._objects_sorted) self._sorter.start()
def __init__(self): super(SelectTiVoWidget, self).__init__() self.tivos_found = [] self.label = QLabel(self) self.label.setText('Below is a listing of all TiVos discovered on your' ' network, which will refresh every 5 seconds. If y' 'ou do not see your TiVo, ' '<a href="#specify_ip">click here to specify an IP' ' address.</a>') self.label.linkActivated.connect(self.specify_ip_address) self.tivo_listings = QTreeWidget(self) self.tivo_listings.itemDoubleClicked.connect(self.tivo_selected) self.tivo_listings.setHeaderLabels(["Name", "IP Address"]) self.layout = QVBoxLayout(self) self.layout.addWidget(self.label) self.layout.addWidget(self.tivo_listings) self.setWindowTitle("Select TiVo") self.resize(512, 384) self.setModal(True)
def _createFilterTree(self, spatial_filters): av = self.model.activeView tally = self.model.statepoint.tallies[av.selectedTally] filters = tally.filters # create a tree for the filters self.treeLayout = QVBoxLayout() self.filterTree = QTreeWidget() self.treeLayout.addWidget(self.filterTree) self.treeExpander = Expander("Filters:", layout=self.treeLayout) self.treeExpander.expand() # start with filters expanded header = QTreeWidgetItem(["Filters"]) self.filterTree.setHeaderItem(header) self.filterTree.setItemHidden(header, True) self.filterTree.setColumnCount(1) self.filter_map = {} self.bin_map = {} for tally_filter in filters: filter_label = str(type(tally_filter)).split(".")[-1][:-2] filter_item = QTreeWidgetItem(self.filterTree, (filter_label,)) self.filter_map[tally_filter] = filter_item # make checkable if not spatial_filters: filter_item.setFlags(QtCore.Qt.ItemIsUserCheckable) filter_item.setToolTip(0, "Only tallies with spatial filters are viewable.") else: filter_item.setFlags(filter_item.flags() | QtCore.Qt.ItemIsTristate | QtCore.Qt.ItemIsUserCheckable) filter_item.setCheckState(0, QtCore.Qt.Unchecked) if isinstance(tally_filter, MeshFilter): filter_item.setCheckState(0, QtCore.Qt.Checked) filter_item.setFlags(QtCore.Qt.ItemIsUserCheckable) filter_item.setToolTip(0, "All Mesh bins are selected automatically") continue def _bin_sort_val(bin): if isinstance(bin, Iterable) and all([isinstance(val, float) for val in bin]): return np.sum(bin) else: return bin for bin in sorted(tally_filter.bins, key=_bin_sort_val): item = QTreeWidgetItem(filter_item, [str(bin),]) if not spatial_filters: item.setFlags(QtCore.Qt.ItemIsUserCheckable) item.setToolTip(0, "Only tallies with spatial filters are viewable.") else: item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) item.setCheckState(0, QtCore.Qt.Unchecked) bin = bin if not isinstance(bin, Iterable) else tuple(bin) self.bin_map[tally_filter, bin] = item # start with all filters selected if spatial filters are present if spatial_filters: filter_item.setCheckState(0, QtCore.Qt.Checked)
def _init_widgets(self): self._tree = QTreeWidget() self._tree.setHeaderHidden(True) self._tree.itemDoubleClicked.connect(self.on_item_doubleclicked) layout = QVBoxLayout() layout.addWidget(self._tree) self.setLayout(layout)
def initUI(self): self.listWidget = QListWidget() self.initDevices() self.treeWidget = QTreeWidget() self.treeWidget.itemPressed.connect(self.onItemPressed) self.treeWidget.setColumnCount(4) self.treeWidget.setColumnWidth(0, 250) self.treeWidget.setColumnWidth(1, 300) self.treeWidget.setColumnWidth(2, 300) self.treeWidget.setColumnWidth(3, 150) self.treeWidget.setHeaderLabels(["Service", "Service UUID", "Characteristic UUID", "Characteristic Property"]) btn = QPushButton("Read Services") btn.clicked.connect(self.onPushButton) groupDevices = QGroupBox("Devices") groupDevices.setMaximumWidth(300) vbox = QVBoxLayout() vbox.addWidget(self.listWidget) vbox.addWidget(btn) groupDevices.setLayout(vbox) self.btnR = QPushButton("Read") self.btnR.clicked.connect(self.onReadButton) self.btnW = QPushButton("Write") self.btnW.clicked.connect(self.onWriteButton) self.lneI = QLineEdit() self.chkN = QCheckBox("Notify") self.chkN.toggled.connect(self.onNotifyCheck) hbox = QHBoxLayout() hbox.addWidget(self.btnR) hbox.addWidget(self.btnW) hbox.addWidget(self.lneI) hbox.addWidget(self.chkN) groupProperty = QGroupBox("Property") #groupProperty.setLayout(vbox) groupProperty.setLayout(hbox) groupServices = QGroupBox("Services") vbox = QVBoxLayout() vbox.addWidget(self.treeWidget) vbox.addWidget(groupProperty) groupServices.setLayout(vbox) hbox = QHBoxLayout() hbox.addWidget(groupDevices) hbox.addWidget(groupServices) self.setLayout(hbox) self.setGeometry(300, 300, 800, 600) self.setWindowTitle('BLE Discover') self.show()
def read_list(tree: QTreeWidget, remove: bool): iterator = QTreeWidgetItemIterator(tree) items = [] while iterator.value(): item = iterator.value() items.append([item.text(0), item.text(1), item.data(2, 2)]) if remove: tree.takeTopLevelItem(tree.indexOfTopLevelItem(item)) iterator += 1 return items
class CollapsibleDialog(QDialog): """a dialog to which collapsible sections can be added; subclass and reimplement define_sections() to define sections and add them as (title, widget) tuples to self.sections """ def __init__(self): super().__init__() self.tree = QTreeWidget() self.tree.setHeaderHidden(True) layout = QVBoxLayout() layout.addWidget(self.tree) self.setLayout(layout) self.tree.setIndentation(0) self.sections = [] self.define_sections() self.add_sections() def add_sections(self): """adds a collapsible sections for every (title, widget) tuple in self.sections """ for (title, widget) in self.sections: button1 = self.add_button(title) section1 = self.add_widget(button1, widget) button1.addChild(section1) def define_sections(self): """reimplement this to define all your sections and add them as (title, widget) tuples to self.sections """ widget = QFrame(self.tree) layout = QHBoxLayout(widget) layout.addWidget(QLabel("Bla")) layout.addWidget(QLabel("Blubb")) title = "Section 1" self.sections.append((title, widget)) def add_button(self, title): """creates a QTreeWidgetItem containing a button to expand or collapse its section """ item = QTreeWidgetItem() self.tree.addTopLevelItem(item) self.tree.setItemWidget(item, 0, SectionExpandButton(item, text=title)) return item def add_widget(self, button, widget): """creates a QWidgetItem containing the widget, as child of the button-QWidgetItem """ section = QTreeWidgetItem(button) section.setDisabled(True) self.tree.setItemWidget(section, 0, widget) return section
def _get_checked_items(qlist: QTreeWidget): items = [] for i in range(qlist.topLevelItemCount()): item = qlist.topLevelItem(i) if item.checkState(0) == Qt.Checked: items.append(item) for j in range(item.childCount()): sub_item = item.child(j) if sub_item.checkState(0) == Qt.Checked: items.append(sub_item) return items
def add_address_to_list(qtreelist: QTreeWidget, addr): for i in range(qtreelist.topLevelItemCount()): item = qtreelist.topLevelItem(i) # type: QTreeWidgetItem if int(item.text(0), 16) == addr: return None # deduplicate item = QTreeWidgetItem(qtreelist) item.setText(0, "%#x" % addr) item.setFlags(item.flags() | Qt.ItemIsUserCheckable) item.setData(0, Qt.CheckStateRole, Qt.Checked) return item
def __init__(self): super().__init__() self.tree = QTreeWidget() self.tree.setHeaderHidden(True) layout = QVBoxLayout() layout.addWidget(self.tree) self.setLayout(layout) self.tree.setIndentation(0) self.sections = [] self.define_sections() self.add_sections()
def testWidgetIterator(self): treeWidget = QTreeWidget() treeWidget.setColumnCount(1) items = [] for i in range(10): items.append(QTreeWidgetItem(None, ['item: %d' % i])) treeWidget.insertTopLevelItems(0, items) index = 0 for it in QTreeWidgetItemIterator(treeWidget): self.assertEqual(it.value().text(0), 'item: %d' % index) index += 1
class SelectTiVoWidget(QDialog): """Displays the list of TiVos that were discovered on the network.""" # Signals connect_to_tivo = Signal(str, str) def __init__(self): super(SelectTiVoWidget, self).__init__() self.tivos_found = [] self.label = QLabel(self) self.label.setText('Below is a listing of all TiVos discovered on your' ' network, which will refresh every 5 seconds. If y' 'ou do not see your TiVo, ' '<a href="#specify_ip">click here to specify an IP' ' address.</a>') self.label.linkActivated.connect(self.specify_ip_address) self.tivo_listings = QTreeWidget(self) self.tivo_listings.itemDoubleClicked.connect(self.tivo_selected) self.tivo_listings.setHeaderLabels(["Name", "IP Address"]) self.layout = QVBoxLayout(self) self.layout.addWidget(self.label) self.layout.addWidget(self.tivo_listings) self.setWindowTitle("Select TiVo") self.resize(512, 384) self.setModal(True) def add_tivo(self, name, ip_address): item = QTreeWidgetItem() item.setText(0, name) item.setText(1, ip_address) self.tivo_listings.addTopLevelItem(item) self.tivos_found.append(item) def tivo_selected(self, item, column): self.connect_to_tivo.emit(item.text(0), item.text(1)) def specify_ip_address(self, link): text, ok = QInputDialog().getText(self, "Specify TiVO IP address", "IP address:", QLineEdit.Normal) if ok: self.connect_to_tivo.emit("unknown", text)
def __init__(self): super().__init__() self.tree = QTreeWidget() self.tree.setHeaderHidden(True) self.tree.setPalette(get_verifone_color()) self.setStyleSheet("background-color: rgba(3, 169, 229, 0)") layout = QVBoxLayout() self.buttonGroup = QButtonGroup() layout.addWidget(self.tree) self.setLayout(layout) self.tree.setIndentation(0) self.setPalette(get_verifone_color()) self.sections = [] self.setFixedWidth(500)
def testCase(self): treeWidget = QTreeWidget() treeWidget.setColumnCount(1) items = [] for i in range(10): items.append(QTreeWidgetItem(None, ["item: %i" % i])) treeWidget.insertTopLevelItems(0, items); _iter = QTreeWidgetItemIterator(treeWidget) index = 0 while(_iter.value()): item = _iter.value() self.assert_(item is items[index]) index += 1 _iter += 1
def __init__(self, chartData, wsSelector, parent=None): QTreeWidget.__init__(self, parent) self.setHeaderHidden(True) self.setAcceptDrops(True) self.setDropIndicatorShown(True) self.setDragDropOverwriteMode(True) self.setDragDropMode(QAbstractItemView.DropOnly) self.chartData = chartData self.wsSelector = wsSelector self.createPopupMenu() self.itemChanged.connect(self.itemHasChanged) self.isDroppedItem = False
def setup_ui(self): layout = QGridLayout() table = QTreeWidget() table.setHeaderLabels(['name', 'width', 'height', 'ratio']) table.setSortingEnabled(True) items = [] for size in self.manager.project.sizes: i = ComparingTreeWidgetItem(None, [ f'{size.width}x{size.height}', str(size.width), str(size.height), str(size.ratio()) ]) i.__data__ = size items.append(i) table.addTopLevelItems(items) @table.currentItemChanged.connect def _(item, prev): del_btn.setEnabled(item is not None) layout.addWidget(table, 0, 0, 1, 2) add_btn = QPushButton('add new') @add_btn.clicked.connect def _(*args): diag = SizeInput(self.manager.project.sizes, self) if diag.exec_() != QDialog.Accepted: return size = diag.value self.manager.add_size(size) item = ComparingTreeWidgetItem(None, [ f'{size.width}x{size.height}', str(size.width), str(size.height), str(size.ratio()) ]) table.addTopLevelItem(item) layout.addWidget(add_btn, 1, 0) del_btn = QPushButton('delete') del_btn.setEnabled(False) @del_btn.clicked.connect def _(*args): item = table.currentItem() size = item.__data__ self.manager.del_size(size) shiboken2.delete(item) layout.addWidget(del_btn, 1, 1) self.setLayout(layout)
def initializePage(self): if self.layout() != None: # print("clean up previous entries") while self.layout().count() > 0: self.layout().removeItem(self.layout().itemAt(0)) self.tree = QTreeWidget() if self.wizard().defaultShare != None: self.tree.addTopLevelItem( MyTreeWidgetItem(self.tree, self.wizard().defaultShare)) else: shares = self.wizard().getShares() if shares == None: print("No shares found...") return print(",".join([x.name for x in shares])) for m in shares: if m.name not in [ "ADMIN$", "C$", "IPC$", "NETLOGON", "SYSVOL" ]: self.tree.addTopLevelItem(MyTreeWidgetItem(self.tree, m)) shareListBox = QWidget() shareListBoxLayout = QVBoxLayout() self.tree.setHeaderLabel("Freigaben") self.tree.itemClicked.connect(self.treeViewItemClicked) shareListBoxLayout.addWidget(self.tree) shareListBox.setLayout(shareListBoxLayout) self.folderList = QListWidget() folderListBox = QWidget() folderListBoxLayout = QVBoxLayout() folderListHeaderMessage = "Verzeichnisinhalt" folderListBoxLayout.addWidget(QLabel(folderListHeaderMessage)) folderListBoxLayout.addWidget(self.folderList) folderListBox.setLayout(folderListBoxLayout) layout = QHBoxLayout() layout.addWidget(shareListBox) layout.addWidget(folderListBox) self.setLayout(layout)
def _crateSelectors(self): self.mLayout = QVBoxLayout(self) wsLayout = QVBoxLayout() alg = self.algManager self.wsSelector = WorkspaceChooser(alg) self.wsSelector.setMaximumHeight(70) groups = self.chartData.getDataGroups() self.wsSelector.addItems(groups) self.wsSelector.currentTextChanged.connect(self._updateAll) self.chartData.dataGroupAdded.connect(self.addNewGroup) self.mLayout.addWidget(QLabel('Workspaces')) self.mLayout.addWidget(self.wsSelector) self.chartData.allRemoved.connect(self._resetWorkspaces) self.chSelector = QTreeWidget() self.chSelector.setHeaderHidden(True) self.chSelector.itemClicked.connect(self.changeCurrentSelect) self.chSelector.itemChanged.connect(self.itemChanged) self.mLayout.addWidget(QLabel('Channels')) self.mLayout.addWidget(self.chSelector) self.sSelector = SignalChooser() self.sSelector.setHeaderHidden(True) self.sSelector.setDragEnabled(True) self.sSelector.setDropIndicatorShown(True) self.sSelector.setContextMenuPolicy(Qt.CustomContextMenu) self.createSignalPopupMenu(self.sSelector) self.sSelector.customContextMenuRequested.connect(self.onSignalContextMenu) self.sSelector.itemClicked.connect(self.changeCurrentSelect) self.sSelector.itemPressed.connect(self.signalPress) self.sSelector.itemChanged.connect(self.itemChanged) self.mLayout.addWidget(QLabel('Signals')) self.mLayout.addWidget(self.sSelector) self.gSelector = SignalGroupsChooser(self.chartData, self.wsSelector) self.mLayout.addWidget(QLabel('Signal Groups')) self.mLayout.addWidget(self.gSelector) self.wsSelector.setCurrentRow(0) self.chartData.signalAdded.connect(self._updateAll) self.chartData.signalRemoved.connect(self._updateAll) self.chartData.signalGroupAdded.connect(self._updateAll) self.chartData.signalGroupRemoved.connect(self._updateAll) self.chartData.signalToGrupAdded.connect(self._updateAll) self.chartData.signalFromGroupRemoved.connect(self._updateAll)
def __init__(self, dataManager, parent=None, inv=True, onlyOne=True, inputList=None): QTreeWidget.__init__(self, parent) self.isInverse = inv self.inputList = inputList self.dm = dataManager self.setHeaderHidden(True) self._create() if onlyOne: if inputList is None: self.curChecked = None self.itemChanged.connect(self.itemHasChanged) self.dm.signalAdded.connect(self.addItem) self.dm.signalRemoved.connect(self.removeItem)
def _init_finds_tab(self, tab): finds_list = QTreeWidget() finds_list.setHeaderHidden(True) self._finds_list = finds_list layout = QVBoxLayout() layout.addWidget(finds_list) frame = QFrame() frame.setLayout(layout) import_button = QPushButton("Import List") import_button.clicked.connect(lambda: self._import_to_list(self._finds_list)) layout.addWidget(import_button) tab.addTab(frame, 'Finds') self._finds_list.itemChanged.connect(self._on_explore_addr_changed)
def make_viewer(self, exif_reader): self.exif_reader = exif_reader ifds = self.exif_reader.get_exif() self.qw_tree = QTreeWidget(self) qt_util_init_tree(self.qw_tree, header_list=['ifd_name']) self.qw_stack = QStackedWidget(self) self.tree_type_to_stack_idx = {} for tree_item_type, (ifd_name, ifd) in enumerate(ifds.items()): # ----------------------- # treeにifd nameを書き込んでroot_treeに登録する. # ----------------------- qw_tree_item = QTreeWidgetItem(['{} ifd'.format(ifd_name), ''], type=tree_item_type) self.qw_tree.addTopLevelItem(qw_tree_item) # ----------------------- # text_editにexif情報を書き込んでstacked_widgetに登録する. # ----------------------- qw_text_edit = QTextEdit(self) qt_util_init_text_edit(qw_text_edit) qt_util_append_text_edit(qw_text_edit, None, head=True) for _, tag in ifd.items(): qt_util_append_text_edit(qw_text_edit, tag, head=False, display_max_len=50) qt_util_reset_text_edit_cursor(qw_text_edit) idx = self.qw_stack.addWidget(qw_text_edit) self.tree_type_to_stack_idx[tree_item_type] = idx else: self.qw_tree.itemClicked.connect(self._tree_item_clicked) # ----------------------- # widgetをlayoutに登録する. # ----------------------- widgets = [self.qw_tree, self.qw_stack] self._make_layout(widgets) self._make_toolbar() self.show() # widgetを表示する.
def down_list(tree: QTreeWidget): selected = tree.currentItem() if selected: index = tree.indexOfTopLevelItem(selected) name = selected.text(0) desc = selected.text(1) data = selected.data(2, 2) new = QTreeWidgetItem([name, desc]) new.setData(2, 2, data) tree.takeTopLevelItem(index) tree.insertTopLevelItem(index + 1, new) tree.setCurrentItem(new)
def _init_widgets(self): # search box self._search_box = QLineEdit() # tree view self._treewidget = QTreeWidget() self._treewidget.setHeaderHidden(True) # refresh button self._apply_btn = QPushButton("Apply") self._apply_btn.clicked.connect(self._code_view.decompile) layout = QVBoxLayout() layout.addWidget(self._search_box) layout.addWidget(self._treewidget) layout.addWidget(self._apply_btn) self.setLayout(layout)
def resizeEvent(self, event): QTreeWidget.resizeEvent(self, event) if self.queueInitialPresentation: self.initialPresentation() self.scrollTo(self.currentIndex()) newWidth = self.width() newHeight = self.height() #log.log_debug('QTreeWidget resizeEvent(), now I\'m %dx%d' % (newWidth, newHeight)) if newWidth == self.oldWidth and newHeight == self.oldHeight: return self.oldWidth = newWidth self.oldHeight = newHeight self.setColumnWidthsNicely()
def _init_widgets(self): # search box self._search_box = QLineEdit() # tree view self._treewidget = QTreeWidget() self._treewidget.setHeaderHidden(True) self._treewidget.itemChanged.connect(self._on_item_changed) # refresh button self._apply_btn = QPushButton("Apply") self._apply_btn.clicked.connect(self._on_apply_pressed) layout = QVBoxLayout() layout.addWidget(self._search_box) layout.addWidget(self._treewidget) layout.addWidget(self._apply_btn) self.setLayout(layout)
def init_ui(self): self.vbox = QVBoxLayout() self.refresh = QPushButton('Refresh') self.refresh.clicked.connect(lambda: self.get_map()) self.vbox.addWidget(self.refresh) self.tree = QTreeWidget() self.tree.itemDoubleClicked.connect(self.open_region) self.tree.setColumnCount(3) self.tree.header().setSectionResizeMode(QHeaderView.ResizeToContents) self.tree.header().setStretchLastSection(False) self.tree.setHeaderLabels( ['Memory Region', 'Start Address', 'End Address']) self.vbox.addWidget(self.tree) self.setLayout(self.vbox) self.setGeometry(100, 100, 500, 300) self.setWindowTitle("Memory Tree") self.show()
def UpdateFileList(self, baseFolder: Path, fileList: QtWidgets.QTreeWidget): assert (fileList) assert (baseFolder) asset_path = baseFolder / re_project._RE_DCC_APP fileList.clear() for pattern in self.sceneDCCExtensions: filelist_gen = asset_path.glob(pattern) file_list = list(filelist_gen) for file_path in file_list: rel_path: Path = file_path.relative_to(asset_path) #print(rel_path.as_posix()) file_stats: os.stat_result = file_path.stat() mtime = file_stats.st_mtime timestamp_str = datetime.datetime.fromtimestamp( mtime).strftime('%Y-%m-%d-%H:%M') fileList.addTopLevelItem( QtWidgets.QTreeWidgetItem([ rel_path.as_posix(), timestamp_str, ProjectManagerUI.convert_file_size(file_stats.st_size) ])) fileList.resizeColumnToContents(0) fileList.resizeColumnToContents(2)
def add_tree_with_header(self, parent): tw = QTreeWidget() parent.addWidget(tw) tw.setHeaderLabels(['Type', 'Legs', 'Has Hair/Fur']) tw.setSortingEnabled(True) tw.setAlternatingRowColors(True) i1 = QTreeWidgetItem(tw, ['Mammal']) i2 = QTreeWidgetItem(i1, ['Rodent']) i3 = QTreeWidgetItem(i2, ['Rat', '4', 'True']) i3 = QTreeWidgetItem(i2, ['Beaver', '2', 'True']) i2 = QTreeWidgetItem(i1, ['Primate']) i3 = QTreeWidgetItem(i2, ['Baboon', '2', 'True']) i3 = QTreeWidgetItem(i2, ['Human', '2', 'True']) i1 = QTreeWidgetItem(tw, ['Reptile']) i2 = QTreeWidgetItem(i1, ['Snake', '0', 'False']) i3 = QTreeWidgetItem(i1, ['Crocodile', '4', 'False']) self.add_expand_collapse_buttons(parent, tw)