Я разрабатываю Систему управления запасами, используя Python и PyQt5 (пользовательский интерфейс разработан в Qt Designer). Я столкнулся с очень странной проблемой с удалением строки в QTableWidget. Проблемы:
Проблема с индексом: Когда я вызываю self.tableWidget.currentRow(), он постоянно возвращает -1, даже если строка выбрана визуально. Следовательно, .removeRow(-1) ничего не делает или выдает ошибку.
Призрачное выполнение: Моя кнопка DELETE, похоже, очищает заголовки таблиц и ведет себя неожиданно, хотя я явно не подключил ее к функции с помощью .clicked.connect().
Сохранение данных: Даже когда пользовательский интерфейс выглядит «чистым» или «сбойным», базовые строки остаются в структуре данных, но горизонтальные заголовки исчезают.
Что я пробовал:
Переписать весь скрипт с нуля.
Проверка того, установлено ли для SelectionBehavior значение SelectRows.
Проверка имен объектов в Qt Designer. Мой текущий фрагмент:
Я разрабатываю [b]Систему управления запасами[/b], используя [b]Python[/b] и [b]PyQt5[/b] (пользовательский интерфейс разработан в Qt Designer). Я столкнулся с очень странной проблемой с удалением строки в QTableWidget. [b]Проблемы:[/b] [list] [*][b]Проблема с индексом:[/b] Когда я вызываю self.tableWidget.currentRow(), он постоянно возвращает -1, даже если строка выбрана визуально. Следовательно, .removeRow(-1) ничего не делает или выдает ошибку.
[*][b]Призрачное выполнение:[/b] Моя кнопка [b]DELETE[/b], похоже, очищает заголовки таблиц и ведет себя неожиданно, хотя я явно не подключил ее к функции с помощью .clicked.connect().
[*][b]Сохранение данных:[/b] Даже когда пользовательский интерфейс выглядит «чистым» или «сбойным», базовые строки остаются в структуре данных, но горизонтальные заголовки исчезают.
[/list] [b]Что я пробовал:[/b] [list] [*]Переписать весь скрипт с нуля.
[*]Проверка того, установлено ли для SelectionBehavior значение SelectRows.
[*]Проверка имен объектов в Qt Designer. [b]Мой текущий фрагмент:[/b] [code]def delete_item(self): row = self.tableWidget.currentRow() print(f"Selected row: {row}") # Always prints -1 if row > -1: self.tableWidget.removeRow(row) [/code] [b]Вопросы:[/b]
Почему currentRow() возвращает -1, несмотря на выбор вручную?
[*]Возможно ли, что [b]автоматическое соединение[/b] Qt Designer (on_objectName_clicked) запускает метод Clear() по умолчанию?
[*]Как безопасно удалить строку, не потеряв горизонтальные заголовки?