added right-click menu for deleting all/selected list items
This commit is contained in:
@ -2,6 +2,7 @@ from PyQt5.QtCore import Qt
|
|||||||
from PyQt5.QtWidgets import QListWidget
|
from PyQt5.QtWidgets import QListWidget
|
||||||
|
|
||||||
from .dictlistitem import DictListItem
|
from .dictlistitem import DictListItem
|
||||||
|
from ..rclickmenu import RClickMenu
|
||||||
|
|
||||||
|
|
||||||
class DictListWidget(QListWidget):
|
class DictListWidget(QListWidget):
|
||||||
@ -9,6 +10,29 @@ class DictListWidget(QListWidget):
|
|||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.items = {}
|
self.items = {}
|
||||||
|
self._add_menu()
|
||||||
|
|
||||||
|
|
||||||
|
def _add_menu(self):
|
||||||
|
self.menu = menu = RClickMenu(self)
|
||||||
|
menu.addAction("delete selected", self.delete_selected)
|
||||||
|
menu.addAction("delete all", self.delete_all)
|
||||||
|
|
||||||
|
def delete_selected(self):
|
||||||
|
selected = self.selectedItems()
|
||||||
|
for i in selected:
|
||||||
|
self.items.pop(i.key)
|
||||||
|
self.deleteItem(i)
|
||||||
|
|
||||||
|
def deleteItem(self, itm):
|
||||||
|
index = self.indexFromItem(itm)
|
||||||
|
row = index.row()
|
||||||
|
self.takeItem(row)
|
||||||
|
|
||||||
|
def delete_all(self):
|
||||||
|
self.items.clear()
|
||||||
|
super().clear()
|
||||||
|
|
||||||
|
|
||||||
def get(self, key):
|
def get(self, key):
|
||||||
return self.items[key]
|
return self.items[key]
|
||||||
|
23
grum/rclickmenu.py
Normal file
23
grum/rclickmenu.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
from PyQt5.QtCore import Qt, QPoint
|
||||||
|
from PyQt5.QtWidgets import QMenu, QAction
|
||||||
|
from PyQt5.QtGui import QCursor
|
||||||
|
|
||||||
|
|
||||||
|
class RClickMenu:
|
||||||
|
|
||||||
|
def __init__(self, obj):
|
||||||
|
self.obj = obj
|
||||||
|
self.menu = QMenu()
|
||||||
|
obj.setContextMenuPolicy(Qt.CustomContextMenu)
|
||||||
|
obj.customContextMenuRequested[QPoint].connect(self.on_show)
|
||||||
|
|
||||||
|
def on_show(self):
|
||||||
|
pos = QCursor.pos()
|
||||||
|
self.menu.exec(pos)
|
||||||
|
|
||||||
|
def addAction(self, name, func):
|
||||||
|
action = QAction(name, triggered=func, parent=self.obj) # here, parent needs to be set
|
||||||
|
self.menu.addAction(action)
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user