[PyQt] Drop to system

Hugo Léveillé hugol at fastmail.net
Thu Sep 9 16:04:03 BST 2010


Thanks alot




On Thu, 09 Sep 2010 14:24 +0100, "Baz Walter" <bazwal at ftml.net> wrote:
> On 09/09/10 01:17, David Boddie wrote:
> > On Wed Sep 8 22:33:17 BST 2010, Hugo Leveille wrote:
> >
> >> I have looked at the doc but all I could find was drag and drop within the
> >> pyqt app itself. What id like to do is the, for exemple, attach an url or
> >> whatever needed to an item so that if I drag the item into my desktop, in a
> >> explorer window or whatever othe app that support drag drop, it will
> >> recongnize it
> >>
> >> Some if anyone is nice enought to give me a quick exemple or to point me at
> >> the specific exemple where it is shown, it would be very nice
> >
> > It's been a while since I looked at this sort of thing, and the example I
> > hoped would help me remember doesn't actually do anything with URLs...
> >
> > You need to set the URL of the MIME data you create when you start a drag
> > operation:
> >
> > http://www.riverbankcomputing.com/static/Docs/PyQt4/html/qmimedata.html#setUrls
> >
> > I seem to remember that you have to supply URLs for certain things to work
> > on certain systems, and this may mean that you have to save data to a
> > temporary file, then set the URL of that file, when filling in the MIME data.
> >
> > Here is one way to do it that doesn't use a temporary file:
> >
> >    http://www.diotavelli.net/PyQtWiki/Exporting_a_file_to_other_applications
> >
> > The Drop Site example in Qt is useful for looking at the MIME types of data
> > dragged from other applications. It would be useful if someone ported that
> > to PyQt.
> 
> as i pointed out in an earlier post, the draggabletext example in the 
> pyqt sources can easily be adapted to work with urls: just change 
> mimeData.setText to mimeData.setUrls and it will just work :)
> 
> anyway, here's a simplified version of the wiki example that doesn't 
> write any additional files:
> 
> import sys, os
> from PyQt4.QtCore import Qt, QMimeData, QUrl
> from PyQt4.QtGui import QApplication, QLabel, QDrag
> 
> 
> class Window(QLabel):
>      def __init__(self):
>          QLabel.__init__(self)
>          self.setWindowTitle('Drag File Url')
>          self.setText(os.path.join(os.getcwd(), __file__))
>          self.setMargin(20)
> 
>      def mousePressEvent(self, event):
>          if event.button() == Qt.LeftButton:
>              data = QMimeData()
>              data.setUrls([QUrl.fromLocalFile(self.text())])
>              drag = QDrag(self)
>              drag.setMimeData(data)
>              drag.exec_()
> 
> 
> if __name__ == "__main__":
> 
>      app = QApplication(sys.argv)
>      window = Window()
>      window.show()
> 
>      sys.exit(app.exec_())
> 
> _______________________________________________
> PyQt mailing list    PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
> 


-- 
  Hugo Léveillé
  hugol at fastmail.net



More information about the PyQt mailing list