#python #qtextedit #pyqt6
Вопрос:
Я пытаюсь установить выбранные строки в маркированные точки и обратно, здесь я устанавливаю отступ в 0, он уничтожает маркированные точки, но свойство списка остается верным, поэтому этот код не будет снова возвращать ту же строку в маркированный список, как очистить базовый формат списка Или каков наилучший подход?
def bullet_list(self):
cursor = self.textEdit.textCursor()
list = cursor.currentList()
if list:
listfmt = cursor.currentList().format()
listfmt.setIndent(0)
cursor.createList(listfmt)
self.textEdit.setTextCursor(cursor)
self.textEdit.setFocus()
else:
listFormat = QTextListFormat()
style = QTextListFormat.Style.ListDisc
listFormat.setStyle(style)
cursor.createList(listFormat)
self.textEdit.setTextCursor(cursor)
self.textEdit.setFocus()
Ответ №1:
Элементы должны быть удалены из списка, и вы также не должны использовать createList
их снова.
def bullet_list(self):
cursor = self.textEdit.textCursor()
textList = cursor.currentList()
if textList:
start = cursor.selectionStart()
end = cursor.selectionEnd()
removed = 0
for i in range(textList.count()):
item = textList.item(i - removed)
if (item.position() <= end and
item.position() item.length() > start):
textList.remove(item)
blockCursor = QTextCursor(item)
blockFormat = blockCursor.blockFormat()
blockFormat.setIndent(0)
blockCursor.mergeBlockFormat(blockFormat)
removed = 1
self.textEdit.setTextCursor(cursor)
self.textEdit.setFocus()
else:
listFormat = QTextListFormat()
style = QTextListFormat.ListDisc
listFormat.setStyle(style)
cursor.createList(listFormat)
self.textEdit.setTextCursor(cursor)
self.textEdit.setFocus()
Примечание: list
является ли Python встроенным, присвоение его чему-либо другому считается плохой практикой.
Комментарии:
1. @JackZero Обратите внимание, что я обновил ответ, так что удаляются только элементы списка, которые находятся в выборе.