def propertyInserted(self, index, afterIndex):
afterItem = self.m_indexToItem.get(afterIndex)
parentItem = self.m_indexToItem.get(index.parent())
newItem = 0
if (parentItem):
newItem = QTreeWidgetItem(parentItem, afterItem)
else:
newItem = QTreeWidgetItem(self.m_treeWidget, afterItem)
self.m_itemToIndex[newItem] = index
self.m_indexToItem[index] = newItem
newItem.setFlags(newItem.flags() | Qt.ItemIsEditable)
newItem.setExpanded(True)
self.updateItem(newItem)
python类ItemIsEditable()的实例源码
qttreepropertybrowser.py 文件源码
项目:QtPropertyBrowserV2.6-for-pyqt5
作者: theall
项目源码
文件源码
阅读 23
收藏 0
点赞 0
评论 0
qttreepropertybrowser.py 文件源码
项目:QtPropertyBrowserV2.6-for-pyqt5
作者: theall
项目源码
文件源码
阅读 20
收藏 0
点赞 0
评论 0
def keyPressEvent(self, event):
if event.key() in [Qt.Key_Return, Qt.Key_Enter, Qt.Key_Space]:## Trigger Edit
if (not self.m_editorPrivate.editedItem()):
item = self.currentItem()
if item:
if (item.columnCount() >= 2 and ((item.flags() & (Qt.ItemIsEditable | Qt.ItemIsEnabled)) == (Qt.ItemIsEditable | Qt.ItemIsEnabled))):
event.accept()
## If the current position is at column 0, move to 1.
index = self.currentIndex()
if (index.column() == 0):
index = index.sibling(index.row(), 1)
self.setCurrentIndex(index)
self.edit(index)
return
super(QtPropertyEditorView, self).keyPressEvent(event)
qttreepropertybrowser.py 文件源码
项目:QtPropertyBrowserV2.6-for-pyqt5
作者: theall
项目源码
文件源码
阅读 20
收藏 0
点赞 0
评论 0
def mousePressEvent(self, event):
super(QtPropertyEditorView, self).mousePressEvent(event)
item = self.itemAt(event.pos())
if item:
if ((item != self.m_editorPrivate.editedItem()) and (event.button() == Qt.LeftButton)
and (self.header().logicalIndexAt(event.pos().x()) == 1)
and ((item.flags() & (Qt.ItemIsEditable | Qt.ItemIsEnabled)) == (Qt.ItemIsEditable | Qt.ItemIsEnabled))):
self.editItem(item, 1)
elif (not self.m_editorPrivate.hasValue(item) and self.m_editorPrivate.markPropertiesWithoutValue() and not self.rootIsDecorated()):
if (event.pos().x() + self.header().offset() < 20):
item.setExpanded(not item.isExpanded())
## ------------ QtPropertyEditorDelegate
def add_items(self, items: list) -> None:
for item in items:
listitem = QListWidgetItem(item, self.faves_listWidget)
listitem.setFlags(listitem.flags() | Qt.ItemIsEditable)
self.faves_listWidget.sortItems(Qt.AscendingOrder)
def add_item(self) -> None:
if len(self.faves_lineEdit.text()):
item = QListWidgetItem(self.faves_lineEdit.text(), self.faves_listWidget)
item.setFlags(item.flags() | Qt.ItemIsEditable)
self.faves_listWidget.sortItems(order=Qt.AscendingOrder)
self.faves_lineEdit.clear()
def __init__(self, parent, info, title="Channel Properties"):
super().__init__(parent)
self.setWindowTitle(title)
self.model = QStandardItemModel(info["nchan"], 4)
self.model.setHorizontalHeaderLabels(["#", "Label", "Type", "Bad"])
for index, ch in enumerate(info["chs"]):
item = QStandardItem()
item.setData(index, Qt.DisplayRole)
item.setFlags(item.flags() & ~Qt.ItemIsEditable)
self.model.setItem(index, 0, item)
self.model.setItem(index, 1, QStandardItem(ch["ch_name"]))
kind = channel_type(info, index).upper()
self.model.setItem(index, 2, QStandardItem(str(kind)))
bad = QStandardItem()
bad.setData(ch["ch_name"] in info["bads"], Qt.UserRole)
bad.setCheckable(True)
bad.setEditable(False)
checked = ch["ch_name"] in info["bads"]
bad.setCheckState(Qt.Checked if checked else Qt.Unchecked)
self.model.setItem(index, 3, bad)
self.model.itemChanged.connect(bad_changed)
self.proxymodel = MySortFilterProxyModel()
self.proxymodel.setSourceModel(self.model)
self.view = QTableView()
self.view.setModel(self.proxymodel)
self.view.setItemDelegateForColumn(2, ComboBoxDelegate(self.view))
self.view.setEditTriggers(QAbstractItemView.AllEditTriggers)
self.view.verticalHeader().setVisible(False)
self.view.horizontalHeader().setStretchLastSection(True)
self.view.setShowGrid(False)
self.view.setSelectionMode(QAbstractItemView.NoSelection)
self.view.setSortingEnabled(True)
self.view.sortByColumn(0, Qt.AscendingOrder)
self.view.resizeColumnsToContents()
# for i in range(self.model.rowCount()):
# self.view.openPersistentEditor(self.model.index(i, 2))
vbox = QVBoxLayout(self)
vbox.addWidget(self.view)
self.buttonbox = QDialogButtonBox(QDialogButtonBox.Ok |
QDialogButtonBox.Cancel)
vbox.addWidget(self.buttonbox)
self.buttonbox.accepted.connect(self.accept)
self.buttonbox.rejected.connect(self.reject)
self.resize(400, 650)
def flags(self, index):
return Qt.ItemIsEditable | Qt.ItemIsEnabled
# if (index.column() == 0):
# return Qt.ItemIsEditable | Qt.ItemIsEnabled
# else:
# return Qt.ItemIsEnabled
def flags(self, index):
return Qt.ItemIsEditable | Qt.ItemIsEnabled
# if (index.column() == 0):
# return Qt.ItemIsEditable | Qt.ItemIsEnabled
# else:
# return Qt.ItemIsEnabled
def flags(self, index):
flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable \
| Qt.ItemIsDragEnabled | Qt.ItemIsDropEnabled \
| Qt.ItemNeverHasChildren
if not isinstance(self.data(index), (Font, Glyph)):
flags |= Qt.ItemIsEditable
return flags
def cb_function_selected(self, index):
# get the peak number of the changed function
i_peak = int(self.sender().objectName()[-1])
# check which function has been selected and update the table flags accordingly
if index == 0:
# peak has been turned off
for i_row in range(1, 5):
self.ui.table_widget.item(i_peak, i_row).setFlags(Qt.NoItemFlags)
elif index == 1:
# gaussian has been selected
for i_row in range(1, 4):
self.ui.table_widget.item(i_peak, i_row).setFlags(
Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
self.ui.table_widget.item(i_peak, 4).setFlags(Qt.NoItemFlags)
elif index == 2:
# lorentzian has been selected
for i_row in range(1, 3):
self.ui.table_widget.item(i_peak, i_row).setFlags(
Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
self.ui.table_widget.item(i_peak, 3).setFlags(Qt.NoItemFlags)
self.ui.table_widget.item(i_peak, 4).setFlags(
Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
elif index == 3:
# voigt has been selected
for i_row in range(1, 5):
self.ui.table_widget.item(i_peak, i_row).setFlags(
Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
def flags(self, index):
"""Return the active flags for the given index. Add editable
flag to items in the first colum or greater.
"""
activeFlags = (Qt.ItemIsEnabled | Qt.ItemIsSelectable |
Qt.ItemIsUserCheckable)
node = self.getNode(index)
column = index.column()
if column > 0 and not node.childCount():
activeFlags = activeFlags | Qt.ItemIsEditable
return activeFlags
def _process_row(self, y, row):
cols = self.columnCount()
for x, i in enumerate(range(0, len(row), self._width)):
block = row[i:i+self._width]
item = QTableWidgetItem(codecs.encode(block, 'hex').decode())
item.setBackground(QBrush(QColor('lightgray')))
item.setForeground(QBrush(QColor('black')))
item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
item.setData(Qt.UserRole, block) # store original data
if self._read_only:
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
else:
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
self.setItem(y, x, item)
# process remaining, unfilled cells
for j in range(x+1, cols):
item = QTableWidgetItem()
item.setBackground(QBrush(QColor('white')))
item.setFlags(Qt.NoItemFlags)
item.setTextAlignment(Qt.AlignHCenter)
self.setItem(y, j, item)
text = self._bytes_to_ascii(row)
item = QTableWidgetItem(text)
item.setData(Qt.UserRole, row) # store original data
item.setTextAlignment(Qt.AlignLeft| Qt.AlignVCenter)
item.setBackground(QBrush(QColor('lightblue')))
item.setForeground(QBrush(QColor('black')))
if self._read_only:
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
else:
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
self.setItem(y, cols - 1, item)
def flags(self, index):
flags = super(EditableSqlModel, self).flags(index)
if index.column() in (1, 2):
flags |= Qt.ItemIsEditable
return flags
def addImage(self):
fileNames, _ = QFileDialog.getOpenFileNames(self, "Open Images", '',
"Images (*.png *.xpm *.jpg);;All Files (*)")
for fileName in fileNames:
row = self.imagesTable.rowCount()
self.imagesTable.setRowCount(row + 1)
imageName = QFileInfo(fileName).baseName()
item0 = QTableWidgetItem(imageName)
item0.setData(Qt.UserRole, fileName)
item0.setFlags(item0.flags() & ~Qt.ItemIsEditable)
item1 = QTableWidgetItem("Normal")
item2 = QTableWidgetItem("Off")
if self.guessModeStateAct.isChecked():
if '_act' in fileName:
item1.setText("Active")
elif '_dis' in fileName:
item1.setText("Disabled")
elif '_sel' in fileName:
item1.setText("Selected")
if '_on' in fileName:
item2.setText("On")
self.imagesTable.setItem(row, 0, item0)
self.imagesTable.setItem(row, 1, item1)
self.imagesTable.setItem(row, 2, item2)
self.imagesTable.openPersistentEditor(item1)
self.imagesTable.openPersistentEditor(item2)
item0.setCheckState(Qt.Checked)
def flags(self, index):
flags = super(EditableSqlModel, self).flags(index)
if index.column() in (1, 2):
flags |= Qt.ItemIsEditable
return flags
def addImage(self):
fileNames, _ = QFileDialog.getOpenFileNames(self, "Open Images", '',
"Images (*.png *.xpm *.jpg);;All Files (*)")
for fileName in fileNames:
row = self.imagesTable.rowCount()
self.imagesTable.setRowCount(row + 1)
imageName = QFileInfo(fileName).baseName()
item0 = QTableWidgetItem(imageName)
item0.setData(Qt.UserRole, fileName)
item0.setFlags(item0.flags() & ~Qt.ItemIsEditable)
item1 = QTableWidgetItem("Normal")
item2 = QTableWidgetItem("Off")
if self.guessModeStateAct.isChecked():
if '_act' in fileName:
item1.setText("Active")
elif '_dis' in fileName:
item1.setText("Disabled")
elif '_sel' in fileName:
item1.setText("Selected")
if '_on' in fileName:
item2.setText("On")
self.imagesTable.setItem(row, 0, item0)
self.imagesTable.setItem(row, 1, item1)
self.imagesTable.setItem(row, 2, item2)
self.imagesTable.openPersistentEditor(item1)
self.imagesTable.openPersistentEditor(item2)
item0.setCheckState(Qt.Checked)
ItemViews_QListView_02_user_list_model.py 文件源码
项目:OpenTutorials_PyQt
作者: RavenKyu
项目源码
文件源码
阅读 22
收藏 0
点赞 0
评论 0
def flags(self, QModelIndex):
"""
?? ????? ?? ??
"""
return Qt.ItemIsEditable | Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsTristate
def flags(self, QModelIndex):
return Qt.ItemIsEditable | Qt.ItemIsSelectable | Qt.ItemIsEnabled
def test_edit_rules(self):
num_rules = len(self.message_type.ruleset)
self.assertEqual(num_rules, self.dialog.ruleset_table_model.rowCount())
self.dialog.ui.rbAssignAutomatically.click()
self.assertFalse(self.message_type.assign_manually)
self.dialog.ui.rbAssignManually.click()
self.assertTrue(self.message_type.assign_manually)
self.dialog.ui.rbAssignAutomatically.click()
self.assertTrue(self.dialog.ui.btnAddRule.isEnabled())
self.dialog.ui.btnAddRule.click()
self.assertEqual(num_rules + 1, len(self.message_type.ruleset))
self.assertEqual(num_rules + 1, self.dialog.ruleset_table_model.rowCount())
model = self.dialog.ruleset_table_model
model.setData(model.index(0, 0), 10, role=Qt.EditRole)
self.assertEqual(self.message_type.ruleset[0].start, 9)
model.setData(model.index(0, 1), 20, role=Qt.EditRole)
self.assertEqual(self.message_type.ruleset[0].end, 20)
model.setData(model.index(0, 2), 2, role=Qt.EditRole)
self.assertEqual(self.message_type.ruleset[0].value_type, 2)
model.setData(model.index(0, 3), 2, role=Qt.EditRole)
model.setData(model.index(0, 4), "10101", role=Qt.EditRole)
self.assertEqual(self.message_type.ruleset[0].target_value, "10101")
for i in range(model.rowCount()):
for j in range(model.columnCount()):
self.assertEqual(model.flags(model.index(i, j)), Qt.ItemIsSelectable | Qt.ItemIsEnabled | Qt.ItemIsEditable)
self.dialog.ui.btnRemoveRule.click()
self.assertEqual(num_rules, len(self.message_type.ruleset))
self.assertEqual(num_rules, self.dialog.ruleset_table_model.rowCount())
def flags(self, index: QModelIndex):
flags = super().flags(index)
if index.column() == 1:
flags |= Qt.ItemIsEditable
return flags
def flags(self, index):
if not index.isValid():
return Qt.NoItemFlags
try:
_ = self.message_type[index.row()]
except IndexError:
return Qt.NoItemFlags
return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable
def flags(self, index: QModelIndex):
if not index.isValid():
return Qt.ItemIsDropEnabled
return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable | \
Qt.ItemIsUserCheckable | Qt.ItemIsDragEnabled | Qt.ItemIsDropEnabled
def flags(self, index):
flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable | Qt.ItemIsEditable
try:
lbl = self.labels[index.row()]
except IndexError:
return flags
if len(lbl.fuzz_values) > 1:
flags |= Qt.ItemIsUserCheckable
else:
lbl.fuzz_me = False
return flags
def flags(self, index: QModelIndex):
if index.isValid():
if self.is_writeable:
return Qt.ItemIsEnabled | Qt.ItemIsEditable | Qt.ItemIsSelectable
else:
return Qt.ItemIsEnabled | Qt.ItemIsSelectable
else:
return Qt.NoItemFlags
def create_table_item(content):
item = QTableWidgetItem(str(content))
item.setFlags(item.flags() & ~Qt.ItemIsEditable)
return item
def flags(self, index: QModelIndex):
if not index.isValid():
return Qt.NoItemFlags
return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable
def flags(self, index):
if not index.isValid():
return Qt.NoItemFlags
try:
_ = self.checksum_label.data_ranges[index.row()]
except IndexError:
return Qt.NoItemFlags
return Qt.ItemIsEditable | Qt.ItemIsEnabled | Qt.ItemIsSelectable
def flags(self, index):
flags = super(EditableSqlModel, self).flags(index)
if index.column() in (1, 2):
flags |= Qt.ItemIsEditable
return flags
def addImage(self):
fileNames, _ = QFileDialog.getOpenFileNames(self, "Open Images", '',
"Images (*.png *.xpm *.jpg);;All Files (*)")
for fileName in fileNames:
row = self.imagesTable.rowCount()
self.imagesTable.setRowCount(row + 1)
imageName = QFileInfo(fileName).baseName()
item0 = QTableWidgetItem(imageName)
item0.setData(Qt.UserRole, fileName)
item0.setFlags(item0.flags() & ~Qt.ItemIsEditable)
item1 = QTableWidgetItem("Normal")
item2 = QTableWidgetItem("Off")
if self.guessModeStateAct.isChecked():
if '_act' in fileName:
item1.setText("Active")
elif '_dis' in fileName:
item1.setText("Disabled")
elif '_sel' in fileName:
item1.setText("Selected")
if '_on' in fileName:
item2.setText("On")
self.imagesTable.setItem(row, 0, item0)
self.imagesTable.setItem(row, 1, item1)
self.imagesTable.setItem(row, 2, item2)
self.imagesTable.openPersistentEditor(item1)
self.imagesTable.openPersistentEditor(item2)
item0.setCheckState(Qt.Checked)
def init(self, name, tag, allowed_instances,
sort_order="0",
allowed_children=None,
properties=None,
wizard=None,
required_children=None,
either_children_group=None,
at_least_one_children_group=None,
name_editable=False,
):
if not properties:
properties = OrderedDict()
if not allowed_children:
allowed_children = ()
if not required_children:
required_children = ()
if not either_children_group:
either_children_group = ()
if not at_least_one_children_group:
at_least_one_children_group = ()
self.name = name
self.tag = tag
self.sort_order = sort_order
self.properties = properties
self.allowed_children = allowed_children
self.required_children = required_children
self.either_children_group = either_children_group
self.at_least_one_children_group = at_least_one_children_group
self.hidden_children = []
self.is_hidden = False
self.allowed_instances = allowed_instances
self.wizard = wizard
self.metadata = {}
self.user_sort_order = "0".zfill(7)
self.model_item = NodeStandardItem(self)
self.model_item.setText(self.name)
if allowed_instances > 1 or not allowed_instances:
self.model_item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsDragEnabled | Qt.ItemIsEnabled | Qt.ItemIsEditable)
else:
self.model_item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsDropEnabled | Qt.ItemIsEnabled | Qt.ItemIsEditable)
self.model_item.setEditable(name_editable)