Копировать строку - Python - PullRequest
       12

Копировать строку - Python

3 голосов
/ 11 апреля 2010

Хорошо, ребята, я думаю, это легко, но я не могу найти, как скопировать строку. Просто скопируйте в систему, как CTRL + C в тексте.

По сути, я хочу скопировать строку, например, например, вставить (ctrl + v).

Извините за такой тривиальный вопрос, хаха.

Ответы [ 4 ]

4 голосов
/ 11 апреля 2010

Для Windows вы используете win32clipboard . Вам понадобится pywin32 .

Для GTK (по крайней мере, в GNU / Linux) вы можете использовать pygtk .

РЕДАКТИРОВАТЬ: Поскольку вы упомянули (немного поздно), что вы используете wxPython, у них фактически есть модуль для этого, wx.Clipboard .

2 голосов
/ 11 апреля 2010

Для многоплатформенного решения вам потребуется использовать кроссплатформенный фреймворк, такой как wxPython или PyQt - они оба поддерживают чтение и запись в системный буфер обмена независимо от платформы.

2 голосов
/ 11 апреля 2010

Для Windows вы можете сделать это , и это гораздо проще, чем создать новый подпроцесс и т. Д. *

2 голосов
/ 11 апреля 2010

Это сильно зависит от ОС. В Linux из-за странной модели выбора X самый простой способ - использовать popen('xsel -pi') и записать текст в этот канал.

Например: (я думаю)

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

Как указано в комментариях, на Mac вы можете использовать команду /usr/bin/pbcopy, например:

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

Если вы хотите поддерживать разные ОС, вы можете объединить разные решения с os.name, чтобы определить, какой метод использовать:

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...
...