Buy Me a Coffee? Your support is much appreciated!
PayPal Me: https://www.paypal.me/jiejenn/5
Venmo: @Jie-Jenn
Source Code:
import sys import os import glob from PyQt6.QtWidgets import QApplication, QWidget, QListView, QAbstractItemView, QHBoxLayout, QVBoxLayout from PyQt6.QtCore import Qt, QSize from PyQt6.QtGui import QStandardItemModel, QIcon, QStandardItem, QKeyEvent class ListView_Left(QListView): def __init__(self, parent=None): super().__init__(parent) self.parent = parent self.m_model = QStandardItemModel(self) self.setModel(self.m_model) self.setAcceptDrops(True) self.setIconSize(QSize(150, 150)) self.setDragDropMode(QAbstractItemView.DragDropMode.DragDrop) self.setResizeMode(QListView.ResizeMode.Adjust) self.setViewMode(QListView.ViewMode.IconMode) def dropEvent(self, event): super().dropEvent(event) self.parent.listViewRight.model().removeRow(self.parent.listViewRight.currentIndex().row()) class ListView_Right(QListView): def __init__(self, parent=None): super().__init__(parent) self.parent = parent self.m_model = QStandardItemModel(self) self.setModel(self.m_model) self.setAcceptDrops(True) self.setIconSize(QSize(150, 150)) self.setDragDropMode(QAbstractItemView.DragDropMode.DragDrop) self.setResizeMode(QListView.ResizeMode.Adjust) self.setViewMode(QListView.ViewMode.IconMode) self.installEventFilter(self) def eventFilter(self, source, event): if event.type() == QKeyEvent.Type.KeyPress and event.key() == Qt.Key.Key_Delete: if source == self: row_indx = self.currentIndex().row() self.model().remove().removeRow(row_indx) return super().eventFilter(source, event) def dropEvent(self, event): super().dropEvent(event) self.parent.listViewLeft.model().removeRow(self.parent.listViewLeft.currentIndex().row()) class MyApp(QWidget): def __init__(self): super().__init__() self.window_width, self.window_height = 1400, 500 self.resize(self.window_width, self.window_height) layout = QHBoxLayout() self.setLayout(layout) self.listViewLeft = ListView_Left(self) layout.addWidget(self.listViewLeft) self.listViewRight = ListView_Right(self) layout.addWidget(self.listViewRight) self.loadIcons() def loadIcons(self): icon_folder = os.path.join(os.getcwd(), 'icons') for icon in glob.glob(os.path.join(icon_folder, '*.ico')): item = QStandardItem() item.setIcon(QIcon(icon)) self.listViewLeft.m_model.appendRow(item) if __name__ == '__main__': # don't auto scale when drag app to a different monitor. # QGuiApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough) app = QApplication(sys.argv) app.setStyleSheet(''' QWidget { font-size: 17px; } ''') myApp = MyApp() myApp.show() try: sys.exit(app.exec()) except SystemExit: print('Closing Window...')