Python Forum
[PyQt] Drag items across tabs
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[PyQt] Drag items across tabs
#6
dragMoveEvent required that event.acceptProposedAction() is called in dragEnterEvent. So by using tabAt(pos) as you suggested, this work:

#!/usr/bin/python3
import sys
from PyQt5 import QtCore, QtGui, QtWidgets


class TabBar(QtWidgets.QTabBar):
    def __init__(self, parent):
        super().__init__()
        self.setAcceptDrops(True)

    def dragEnterEvent(self, event):
        event.acceptProposedAction()
        QtWidgets.QTabBar.dragEnterEvent(self, event)

    def dragMoveEvent(self, event):
        pos = event.pos()
        index = self.tabAt(pos)
        self.setCurrentIndex(index)


class TabWidget(QtWidgets.QTabWidget):
    def __init__(self, parent):
        super().__init__()
        tab1 = QtWidgets.QTreeWidget()
        self.setTabBar(TabBar(self))
        self.addTab(tab1, "1st tab")
        self.addTab(QtWidgets.QTreeWidget(), "2nd tab")
        self.addTab(QtWidgets.QTreeWidget(), "3rd tab")

        item = QtWidgets.QTreeWidgetItem()
        item.setText(0, "drag me")
        tab1.addTopLevelItem(item)
        tab1.setDragDropMode(QtWidgets.QAbstractItemView.DragOnly)


class Main(QtWidgets.QMainWindow):
    def __init__(self, parent):
        super().__init__()
        self.ui = QtWidgets.QWidget(self)
        self.ui.tab = TabWidget(self)
        self.ui.layout = QtWidgets.QVBoxLayout()
        self.ui.layout.addWidget(self.ui.tab)
        self.ui.setLayout(self.ui.layout)
        self.setCentralWidget(self.ui)
        self.show()


if __name__== '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = Main(app)
    sys.exit(app.exec_())

(Sep-01-2019, 06:08 PM)Axel_Erfurt Wrote: forget the last post. It's so easy setChangeCurrentOnDrag

Thanks for the tip, I did not see this in the docs.. Sometimes the solutions are simpler than expected Doh
Reply


Messages In This Thread
Drag items across tabs - by Alfalfa - Sep-01-2019, 01:10 AM
RE: Drag items across tabs; how to enable individuals drag events for each tab - by Alfalfa - Sep-01-2019, 11:58 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Found buttonstate in tabs MacTommu 4 1,997 Sep-22-2021, 05:56 PM
Last Post: deanhystad
  TabError: inconsistent use of tabs and spaces in indentation hobbyist 3 4,920 Jun-15-2021, 10:38 PM
Last Post: davide73_italy
  [Tkinter] Vertical Tabs Alignment in Tkinter muhammadasim 2 6,038 Oct-05-2020, 08:40 AM
Last Post: Larz60+
  GUI with drag and drop functionality sayyedkamran 7 6,128 May-26-2020, 10:20 PM
Last Post: jefsummers
  Looking for Python IDE With Drag and Drop GUI Dan_PanMan 0 2,337 May-23-2020, 04:39 PM
Last Post: Dan_PanMan
  [PyQt] Drag and Move window from menubar WBPYTHON 3 4,788 Apr-03-2020, 06:15 PM
Last Post: deanhystad
  click drag olivers 1 2,945 Jan-30-2020, 01:44 AM
Last Post: Larz60+
  [Tkinter] Need help please properly putting tabs within a PanedWindow JackMack118 2 3,375 Dec-08-2019, 03:02 PM
Last Post: balenaucigasa
  [Tkinter] Adding space between Notebook tabs Columbo 4 4,559 Jul-10-2019, 10:46 PM
Last Post: Columbo
  [Tkinter] How to get a tabs works exactly same as google chrome sarthak260 0 3,797 Mar-07-2019, 10:45 AM
Last Post: sarthak260

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020