3

Ok guys I imagine this is easy but I can't seem to find how to copy a string. Simply COPY to the system like CTRL+C on a text.

Basically I want to copy a string so I can for example, lets say, paste(ctrl+v).

Sorry for such a trivial question, haha.

4
  • dependent on operating system I would imagine, what are you using? Commented Apr 10, 2010 at 21:05
  • Windows, although I ask, what if the application was supposed to be multi-platform? Would there be a way? Commented Apr 10, 2010 at 21:09
  • Similar question with a bunch of good answers stackoverflow.com/questions/579687 Commented Apr 11, 2013 at 17:51
  • possible duplicate of How do I copy a string to the clipboard on Windows using Python? Commented Feb 6, 2015 at 10:48

4 Answers 4

4

For Windows, you use win32clipboard. You will need pywin32.

For GTK (at least on GNU/Linux), you can use pygtk.

EDIT: Since you mentioned (a bit late) you're using wxPython, they actually have a module for this too, wx.Clipboard.

Sign up to request clarification or add additional context in comments.

3 Comments

What if, the application was supposed to be multi-platform? Would it be possible?
I think you would have to test for platform and then do one of the methods mentioned here
GTK can run on Windows, so it's likely (but untested) you can use that on both platforms. See pygtk.org/downloads.html and gtk.org/download-windows.html#StableRelease
2

This depends a lot on the OS. On Linux, due to X's bizarre selection model, the easiest way is to use popen('xsel -pi'), and write the text to that pipe.

For example: (I think)

def select_xsel(text):
    import subprocess
    xsel_proc = subprocess.Popen(['xsel', '-pi'], stdin=subprocess.PIPE)
    xsel_proc.communicate(some_text)

As pointed out in the comments, on a Mac, you can use the /usr/bin/pbcopy command, like this:

xsel_proc = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)

If you want to support different OSes, you could combine different solutions with os.name to determine which method to use:

import os, subprocess
def select_text(text):
    if os.name == "posix":
        # try Mac first
        try:
            xsel_proc = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
        except:
            # try Linux version
            xsel_proc = subprocess.Popen(['xsel', '-pi'], stdin=subprocess.PIPE)
    elif os.name == "nt":
        # Windows...

2 Comments

on mac, do the same thing except with /usr/bin/pbcopy
Thanks for both replys & comments!
2

For Windows, you can do this and it's much easier than creating a new subprocess etc...

Comments

2

For a multi-platform solution you will need to use a cross-platform framework like wxPython or PyQt - they both have support for reading and writing to the system clipboard in a platform independent way.

1 Comment

Well ye I'm actually using wxPython.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.