AttributeError: 'QModelIndex' object has no attribute 'buttons'

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
Win 7, Python 3.8, PyQt5

День добрый! Возникла такая ситуация: пытаюсь сделать так, чтобы по клику ПКМ удалялась активная строчка. Использую следующий код:
Python:
from PyQt5 import QtWidgets, QtGui, QtCore, Qt
self.lst_work_keys.doubleClicked.connect(self.del_keys_name)
   
def del_keys_name(self, e: Qt.QKeyEvent):
    if e.buttons() == Qt.Qt.RightButton:
    self.lst_work_keys.takeItem(self.lst_work_keys.currentRow())

Вместо удаления строки получаю ошибку, указанную в названии темы. Может кто-нибудь объяснить, что происходит?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
пытаюсь сделать так, чтобы по клику ПКМ удалялась активная строчка
Это можно сделать например переопределив обработчик события QMouseEvent для объекта lst_work_keys который является экземпляром класса QListWidget.
Вот пример:
Python:
# regress.py
from PyQt5 import QtWidgets, QtGui, QtCore, Qt

...

# переопределяем обработчик события QMouseEvent для lst_work_keys
self.lst_work_keys.mousePressEvent = self.add_del_item_on_right_click

...

# функция для удаления выбранного элемента правым кликом
def add_del_item_on_right_click(self, e):
    # e - событие QMouseEvent, e.button() - номер нажатой кнопки
    # если нажата правая кнопка
    if e.button() == 2:
        # удаляем активный элемент
        self.lst_work_keys.takeItem(self.lst_work_keys.currentRow())
    # вызываем обработчик события QMouseEvent родительского класса
    # QListWidget и передаем ему событие для дальнейшей обработки
    super(QtWidgets.QListWidget, self.lst_work_keys).mousePressEvent(e)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 590
460
83
ну в приведённом коде ошибка отступов после if...
и так сложно сказать, в вашем коде нет QModelIndex, как вы его используете не ясно...
это отрывок откуда то, покажите минимально рабочий пример, который демонстрирует ошибку вашу...
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
ну в приведённом коде ошибка отступов после if...
и так сложно сказать, в вашем коде нет QModelIndex, как вы его используете не ясно...
это отрывок откуда то, покажите минимально рабочий пример, который демонстрирует ошибку вашу...
Хорошо. Приклепляю, вместе с тестовыми данными.
 

Вложения

  • regres_map.zip
    7,2 КБ · Просмотры: 2
  • Книга2.txt
    3,5 КБ · Просмотры: 2

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 590
460
83
и?
ну я открыл, запустил, пожмакал кнопки, меню, ничего не работает...
возможно я не так выразился, но целый проект ваш мне не нужен...
желательно минимально рабочий пример, демонстрирующий вашу ошибку...
если нет, то возможно, вам поможет кто то еще...


upd
оказывается main_win не главный файл...

upd2
модуль variance, что он делает? зачем он нужен? по коду я посмотрел, он что то делает с путями...
он что то делает такое что не умеет модуль os или path?
я не могу его поставить, выдает ошибку версии, в гугле я по нему вообще информации не нашел...

upd3
короче я вам не смогу помочь, простите, может поможет кто то еще...
 
Последнее редактирование:

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
upd2
модуль variance, что он делает? зачем он нужен? по коду я посмотрел, он что то делает с путями...
он что то делает такое что не умеет модуль os или path?
я не могу его поставить, выдает ошибку версии, в гугле я по нему вообще информации не нашел...
Держи)
Это файл-посредник) Храню в нём пути к файлу, чтобы в другие исходники можно было перебрасывать. Мой косяк - забыл про него.
 

Вложения

  • variance.zip
    188 байт · Просмотры: 0

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
Это можно сделать например переопределив обработчик события
Спасибо. Это именно то, что надо. Мудренно, конечно, но с этим ничего не поделать.
 

Форум IT Специалистов