H
Harshad
Hi,
I'm writing a program using Python 2.4 and PyQt4. The aim is to
implement drag and drop from filesystem and display a list of files
dragged on to the listWidget. This function will later become part of a
software for workflow management.
When I run the program, DragEnterEvent works as expected, but the
DropEvent does not seem to be working. I'm not an experienced Python
hacker, and am unable to trace out any problems with the source code.
Any and all help will be appreciated!
Cheers!
Harshad.
P.S.: The source code for the two files is given below:
------------------------------------------- zaraa.py
-------------------------------------------
from PyQt4 import QtCore, QtGui
from zaraamain import Ui_Dialog
import sys
from PyQt4 import *
class Zaraa(QtGui.QDialog, Ui_Dialog):
def __init__(self):
QtGui.QDialog.__init__(self)
# Set up the user interface from Designer.
self.setupUi(self)
# Enable Drag and Drop
self.listWidget.setAcceptDrops(True)
# Set up the handlers for the listWidget
self.listWidget.__class__.dragEnterEvent =
self.lwDragEnterEvent
self.listWidget.__class__.dropEvent = self.lwDropEvent
# Drag Enter Event handler
def lwDragEnterEvent(self, event):
print "DragEnter"
event.acceptProposedAction()
# ------------------------ BEGIN ------------------------
# The following event is not fired, or at least is not
# handled by this function - as is expected...
# Drag Drop Event Handler
def lwDropEvent(self, event):
print "DragDrop"
event.acceptProposedAction()
# we want to append only URLs to the list...
if event.mimeData().hasUrls() == True:
urllist = event.mimeData().urls()
for url in urllist:
self.listWidget.addItem(url.toLocalFile())
# ------------------------ END ------------------------
# Set up the application and execute it.
app = QtGui.QApplication(sys.argv)
window = Zaraa()
window.show()
sys.exit(app.exec_())
------------------------------------------- /zaraa.py
-------------------------------------------
------------------------------------------- zaraamain.py
-------------------------------------------
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'zaraamain.ui'
#
# Created: Sat Aug 26 00:00:10 2006
# by: PyQt4 UI code generator 4.0.1
#
# WARNING! All changes made in this file will be lost!
import sys
from PyQt4 import QtCore, QtGui
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(QtCore.QSize(QtCore.QRect(0,0,249,300).size()).expandedTo(Dialog.minimumSizeHint()))
self.vboxlayout = QtGui.QVBoxLayout(Dialog)
self.vboxlayout.setMargin(9)
self.vboxlayout.setSpacing(6)
self.vboxlayout.setObjectName("vboxlayout")
self.listWidget = QtGui.QListWidget(Dialog)
self.listWidget.setObjectName("listWidget")
self.vboxlayout.addWidget(self.listWidget)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog",
"Zaraa", None, QtGui.QApplication.UnicodeUTF8))
------------------------------------------- /zaraamain.py
-------------------------------------------
I'm writing a program using Python 2.4 and PyQt4. The aim is to
implement drag and drop from filesystem and display a list of files
dragged on to the listWidget. This function will later become part of a
software for workflow management.
When I run the program, DragEnterEvent works as expected, but the
DropEvent does not seem to be working. I'm not an experienced Python
hacker, and am unable to trace out any problems with the source code.
Any and all help will be appreciated!
Cheers!
Harshad.
P.S.: The source code for the two files is given below:
------------------------------------------- zaraa.py
-------------------------------------------
from PyQt4 import QtCore, QtGui
from zaraamain import Ui_Dialog
import sys
from PyQt4 import *
class Zaraa(QtGui.QDialog, Ui_Dialog):
def __init__(self):
QtGui.QDialog.__init__(self)
# Set up the user interface from Designer.
self.setupUi(self)
# Enable Drag and Drop
self.listWidget.setAcceptDrops(True)
# Set up the handlers for the listWidget
self.listWidget.__class__.dragEnterEvent =
self.lwDragEnterEvent
self.listWidget.__class__.dropEvent = self.lwDropEvent
# Drag Enter Event handler
def lwDragEnterEvent(self, event):
print "DragEnter"
event.acceptProposedAction()
# ------------------------ BEGIN ------------------------
# The following event is not fired, or at least is not
# handled by this function - as is expected...
# Drag Drop Event Handler
def lwDropEvent(self, event):
print "DragDrop"
event.acceptProposedAction()
# we want to append only URLs to the list...
if event.mimeData().hasUrls() == True:
urllist = event.mimeData().urls()
for url in urllist:
self.listWidget.addItem(url.toLocalFile())
# ------------------------ END ------------------------
# Set up the application and execute it.
app = QtGui.QApplication(sys.argv)
window = Zaraa()
window.show()
sys.exit(app.exec_())
------------------------------------------- /zaraa.py
-------------------------------------------
------------------------------------------- zaraamain.py
-------------------------------------------
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'zaraamain.ui'
#
# Created: Sat Aug 26 00:00:10 2006
# by: PyQt4 UI code generator 4.0.1
#
# WARNING! All changes made in this file will be lost!
import sys
from PyQt4 import QtCore, QtGui
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(QtCore.QSize(QtCore.QRect(0,0,249,300).size()).expandedTo(Dialog.minimumSizeHint()))
self.vboxlayout = QtGui.QVBoxLayout(Dialog)
self.vboxlayout.setMargin(9)
self.vboxlayout.setSpacing(6)
self.vboxlayout.setObjectName("vboxlayout")
self.listWidget = QtGui.QListWidget(Dialog)
self.listWidget.setObjectName("listWidget")
self.vboxlayout.addWidget(self.listWidget)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog",
"Zaraa", None, QtGui.QApplication.UnicodeUTF8))
------------------------------------------- /zaraamain.py
-------------------------------------------