On Jun 12, 11:24 am, "Eric Brunel" <[EMAIL PROTECTED]> wrote: > On Mon, 11 Jun 2007 14:23:48 +0200,exhuma.twn <[EMAIL PROTECTED]> wrote: > > As many might know, windows allows to copy an image into the clipboard > > by pressing the "Print Screen" button on the keyboard. Is it possible > > to paste such an image from the clipboard into a "Text" widget in > > Tkinter? Here is my first attempt with just trying to print out the > > image data: > > > ----------------- > > def pasteImg(tgt): > > global clipboardEnabled > > if not clipboardEnabled: return > > > win32clipboard.OpenClipboard(0) > > print win32clipboard.GetClipboardData() > > win32clipboard.CloseClipboard() > > ----------------- > > > This works fine with selecting text, but comes up with the following > > error when trying to paste an image: > > > ----------------- > > Exception in Tkinter callback > > Traceback (most recent call last): > > File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__ > > return self.func(*args) > > File "X:\development\testing\tkwiki\tkwiki.py", line 52, in <lambda> > > Button( root, command=lambda: pasteImg(txt) ).pack() > > File "X:\development\testing\tkwiki\tkwiki.py", line 38, in pasteImg > > print win32clipboard.GetClipboardData() > > TypeError: Specified clipboard format is not available > > ----------------- > > > Obviously the clipboard does not know about that format. Does that > > mean I have to wait until it's implemented or are there other ways to > > access the image data? > > According tohttp://msdn2.microsoft.com/en-us/library/ms649039.aspx, there > is format that you should pass to GetClipboardData telling the data type > you expect to get. The format you should specify to get a bitmap image is > named CF_BITMAP in the Windows API. AFAIK, this constant is not exposed in > the Python world, so you have to pass directly the numeric value, which is > 2. > > But even if you do get the clipboard contents, you'll get it in BMP > format, that tk/Tkinter does not understand by default. So you'll need a > means to convert it to the only format known to tk/Tkinter by default, > which is GIF. PIL is certainly able to do that (I don't use it myself); > you may also rely on an external conversion utility. > > HTH > -- > python -c "print ''.join([chr(154 - ord(c)) for c in > 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
Well, by inspecting the clipboard contents, I already suspected it might be "2". So I did a getData with the format set to "2". So, when I try to paste simple text, it does complain that the requested format is not on the clipboard. So far, correct. So I press the print screen button, which loads an image into th clipboard. When pasting I get this: Exception in Tkinter callback Traceback (most recent call last): File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__ return self.func(*args) File "X:\development\testing\tkwiki\tkwiki.py", line 55, in <lambda> Button( root, command=lambda: pasteImg(txt) ).pack() File "X:\development\testing\tkwiki\tkwiki.py", line 39, in pasteImg print win32clipboard.GetClipboardData(2) error: (6, 'GetClipboardData:GlobalLock', 'The handle is invalid.') I'm not sure what this means. ... Ah... bugger. It won't work (yet): http://mail.python.org/pipermail/python-win32/2001-May/000056.html -- http://mail.python.org/mailman/listinfo/python-list