Pasting an image from clipboard in Tkinter?

kyosohma at gmail.com kyosohma at gmail.com
Mon Jun 11 10:40:21 EDT 2007


On Jun 11, 9:07 am, "exhuma.twn" <exh... at gmail.com> wrote:
> On Jun 11, 3:47 pm, kyoso... at gmail.com wrote:
>
>
>
> > On Jun 11, 7:23 am, "exhuma.twn" <exh... at gmail.com> 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?
>
> > I don't think you can paste to a text widget, but I could be mistaken.
> > This link talks about pasting an image into a window, but I don't
> > think it's really what you want...however, it might give you some
> > ideas:
>
> >http://effbot.org/zone/wck-3.htm(see the "Drawing Images" section)
>
> > This link also talks about some of the same things:http://www.wadsworth.org/spider_doc/spider/docs/python/spipylib/tkint...
>
> > If I understand them correctly, it sounds like you could possibly
> > catch the the paste operation and convert the image to a TkImage and
> > then paste it. I think that since it is in the clipboard, then it is a
> > file object and this may work. I just don't know how you intercept a
> > paste.
>
> > Mike
>
> Unfortunately, when they talk about "pasting" they talk about a PIL
> method called paste, which (if I understood correctly) deals with
> blitting one image onto another. Not "pasting" as in copy/paste from
> clipboard.

I don't do much with images as of yet, but from what I've read, it
seems that blitting is a common method. Here's a fairly interesting
article on the process using wxPython (sorry...I wasn't finding
anything under Tkinter):

http://wiki.wxpython.org/index.cgi/WorkingWithImages

It might give some ideas.

Mike




More information about the Python-list mailing list