[Tkinter-discuss] clipboard and bytes

Vasilis Vlachoudis Vasilis.Vlachoudis at cern.ch
Thu Mar 1 11:13:37 EST 2018


I did something else.
I've used the binascii.b2a_hex() and a2b_hex() functions
to convert the bytes() to a hex string and the reverse (double in size, and
a useless UTF-8 conversion, encode/decode) 
This way it works but not a clean approach,
since I am copying in the clipboard binary data in a form of ascii.

Is there a way to create a new mime format and advertise
the format somehow in the clipboard?

Vasilis


________________________________________
From: Vasilis Vlachoudis
Sent: Thursday, March 01, 2018 16:42
To: Michael Lange; tkinter-discuss at python.org
Subject: RE: [Tkinter-discuss] clipboard and bytes

Many thanks!

I works within the same process.
When I try to launch it twice, so I can have clipboard exchange between different processes

I get the following exception:
Traceback (most recent call last):
  File "/usr/lib/python3.6/tkinter/__init__.py", line 1702, in __call__
    return self.func(*args)
  File "foo.py", line 41, in paste
    res = root.tk.call(clip)
_tkinter.TclError: invalid command name "139879786444744cp"


I saw in the documentation that by default it uses the UTF8STRING as type
I've tried to force it to type="STRING" but with no success

________________________________________
From: Tkinter-discuss [tkinter-discuss-bounces+vasilis.vlachoudis=cern.ch at python.org] on behalf of Michael Lange [klappnase at web.de]
Sent: Thursday, March 01, 2018 00:12
To: tkinter-discuss at python.org
Subject: Re: [Tkinter-discuss] clipboard and bytes

On Wed, 28 Feb 2018 20:42:51 +0100
Michael Lange <klappnase at web.de> wrote:

(...)
> So at least this primitive seems to work. Maybe you can use this
> technique to achieve what you want.

Or maybe this slightly modified example comes closer to what you are
looking for:

from tkinter import *

root = Tk()

def copy(string):
    def cp():
        return string
    copyfunc = (root.register(cp))
    return(copyfunc)

root.clipboard_clear()
root.clipboard_append(copy(b'foobar'), type='foo')

def paste(ev):
    clip = root.clipboard_get(type='foo')
    res = root.tk.call(clip)
    print('->', res, type(res))

root.bind('<F1>', paste)
root.mainloop()



Regards

Michael


.-.. .. ...- .   .-.. --- -. --.   .- -. -..   .--. .-. --- ... .--. . .-.

        "... freedom ... is a worship word..."
        "It is our worship word too."
                -- Cloud William and Kirk, "The Omega Glory", stardate
                   unknown
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss at python.org
https://mail.python.org/mailman/listinfo/tkinter-discuss


More information about the Tkinter-discuss mailing list