2016-05-10 3 views
1

Я хотел бы отредактировать элементы listWidget, которые программно выбираются с помощью кнопки. Я не совсем уверен, есть ли способ редактировать выбранные элементы, не удаляя исходные элементы и не добавляя новое редактирование.Как отредактировать элемент QListWidget, не удаляя его для редактирования и добавления?

Я видел это ... но я не уверен, что это то, что мне нужно, как я не могу передать новое значение:

selItems = listWidget.selectedItems() 

for item in selItems: 
    listWidget.editItem(item, "test") 

TypeError: QListWidget.editItem(QListWidgetItem): too many arguments 
+0

Когда вы говорите «редактировать», вы хотите, чтобы пользователь мог набрать что-нибудь? Или вы хотите изменить его программно? –

+0

Измените его программно сам – Zak44

+0

Трудно ответить без дополнительной информации о том, что именно вы хотите. ARe вы просто пытаетесь установить текст элемента и инициализировать его? Минимальный рабочий пример, описывающий то, что вы ожидаете, будет действительно полезен здесь! (Смотрите это: http://stackoverflow.com/help/mcve). Где эта кнопка, которую вы хотите нажать? QListWidgets уже редактируются с помощью двойного щелчка, похоже, вы пытаетесь сделать слишком много. У вас есть рабочий QListWidget, очень простой, который вы можете опубликовать? – neuronet

ответ

3

метод editItem используется, когда вы хотите, чтобы пользователь отредактировать элемент. Если элемент доступен для редактирования, по умолчанию он создаст виджет QLineEdit в ячейке, чтобы пользователь мог редактировать текст, если вы не создали QItemDelegate, чтобы создать другой виджет для редактирования.

Чтобы изменить текст элемента, используйте только setText(). Вы можете использовать text(), чтобы получить текущий текст элемента.

sel_items = listWidget.selectedItems() 

for item in sel_items: 
    item.setText(item.text() + ' plus more text') 
+0

Как насчет примера, если я не хочу SelectedItems, но я хочу выбрать элемент по индексу, например? Я не нашел для этого никакого метода. –

+1

@ ErikŠťastný Вы имеете в виду вот это? ['QListWidget.item (строка)'] (http://pyqt.sourceforge.net/Docs/PyQt4/qlistwidget.html#item) –

+0

Да, но, пожалуйста, проверьте ссылку ниже. У меня возникли проблемы при использовании '.QListWidget.item (row)' http://stackoverflow.com/questions/41182466/python-pyqt-edit-item-at-specific-row-in-qlistwidget-without-takeitem- И в –

Смежные вопросы