PyQt5 QTableView: как отключить взаимодействие с пользователем / выбор при сохранении стиля / цветов по умолчанию?

#python #pyqt #pyqt5

#python #pyqt #pyqt5

Вопрос:

Мне нужно иметь возможность программно выбирать некоторые строки TableView, следовательно, показывать выбранные строки пользователю. Конечно, пользователь не должен иметь возможности изменять выбранные строки, щелкая здесь и там.

В настоящее время я нашел единственный способ отключить взаимодействие с пользователем с помощью:

 self.table_view.setEnabled(False)
 

Хотя это решает проблему выбора пользователя, это также изменяет вид таблицы, делая все это серым:

введите описание изображения здесь

Как я могу восстановить исходный стиль, при котором выбранные строки отображаются синим цветом? введите описание изображения здесь

Ответ №1:

Откройте QDesigner и загрузите свой файл .ui. Нажмите на свой QTableView и в редакторе свойств (правая боковая панель) прокрутите вниз до фиолетовой области. Там вы увидите editTriggers , разверните это. Проверьте первый, который говорит NoEditTriggers .

Это отключит пользователю редактирование ячеек в таблице. Дайте мне знать, если мои инструкции были недостаточно четкими, и я могу предоставить фотографии.

Комментарии:

1. Я кодирую все это с нуля, а не с помощью QDesigner

2. Затем попробуйте self.table.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) .

3. Это не сработало. Может быть, потому что речь идет не о редактировании, а о выборе.

Ответ №2:

Если я правильно понимаю ваш вопрос, вам нужно поиграть со свойствами :

  • setSelectionMode()
  • setSelectionBehavior()
     table_view.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection)
    table_view.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)