[PyQt] Searching for a very small scprit using CLIPBOARD
Aron Bierbaum
aronbierbaum at gmail.com
Sun Apr 26 21:43:41 BST 2009
We ran into a similar situation where we wanted to ensure that a
QPixmap that is copied into the clipboard stays after the application
exits. Although as far as I know this should happen automatically when
your Qt application exists, we had to do this use the following code
manually before exiting our application.
# Send an event to the clipboard so that it copies the data over to the
# clipboard instead of keeping a pointer to the data internally. This should
# happen automatically on exit, but it appears that the mime type convertion
# methods for Qt -> windows formats get unregistered before this event gets
# processed. This caused a bug where we couldn't paste data after closing
# because there was not a conversion method. The magic function on
Windows that
# needs to be called to do this copy is OleFlushClipboard.
from PyQt4 import QtGui, QtCore
clipboard = QtGui.QApplication.clipboard()
event = QtCore.QEvent(QtCore.QEvent.Clipboard)
QtGui.QApplication.sendEvent(clipboard, event)
The basic concept behind this is that by default copying something
into the clipboard only copies a reference/pointer to the source
application. Then when another application wants to paste the data
from the clipboard it requests the data from the source application.
Calling OleFlushClipboard [1] causes Windows to copy the real data
into the clipboard instead of the reference. While this does cause a
delay when copying images, it should not have any noticeable impact
with strings.
-Aron
[1] http://msdn.microsoft.com/en-us/library/ms679707(VS.85).aspx
On Sun, Apr 26, 2009 at 2:34 AM, projetmbc <projetmbc at club-internet.fr> wrote:
> sys.exit(app.exec_()) doesn't work. If the clipboard is empty when the
> program exits, I will do without PyQt so as to have a "universal" clipboard.
>
>
> Thanks a lot because now I knows how to use clipboard in a "real" program..
> Christophe.
>
>
> Demetrius Cassidy a écrit :
>>
>> The clipboard will empty when your program exits. Afaik this is normal
>> behavior with Qt and clipboard access.
>> I know if I use wxWindows the text in the clipboard stays even if I close
>> my
>> app, however I am not sure if it's possible to do this in Qt.
>>
>> And use sys.exit(app.exec_()) instead.
>>
>>
>> projetmbc wrote:
>>
>>>
>>> I've tried the following code but the application never stops because of
>>> app.exec_(), and when I close the application, the clipboard is "empty".
>>>
>>> =========================
>>> #!/usr/bin/env python
>>> #coding=utf-8
>>> import sys
>>> from PyQt4 import QtGui
>>> app = QtGui.QApplication(sys.argv)
>>> clipboard = app.clipboard()
>>> clipboard.setText('texte')
>>> app.exec_()
>>> =========================
>
> _______________________________________________
> PyQt mailing list PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>
More information about the PyQt
mailing list