일을 하다보면 항상 같은 말을 자주 써야할 상황이 많이 생깁니다. 오늘은 평소에 제가 Python 을 이용하여 사용하던 것을 풀어볼까합니다.
바로 clipboard 제어를 통해서 명령행으로 상용구처럼 글씨를 복사해놓는 방법입니다. 물론 상용구 기능의 프로그램을 사용하면 되지만 설치가 어렵거나 이런 경우 스크립트로 돌리는게 편하더라구요.
Tkinter 모듈 내 clipboard 제어
원래 Tkinter는 시스템에서 GUI를 그리기 위한 파이썬의 모듈입니다. 이 tk는 제가 예전에도 포스팅 했었던 것 같네요. (noon때였나.. hwul때였나…)
아무튼 파이썬 인터프리터를 이용하여 gui를 제어하기 때문에 Tk는 클립보드에도 접근할 수 있습니다. 클립보드에 접근이 가능하단 소리는, 우리가 편하게 복붙(Ctrl+C/V)을 할 수 있다는 소리지요.
아래 코드를 보면서 간단하게 보겠습니다.
from Tkinter import Tk
clip = Tk()
clip.clipboard_append("Copy") # append를 통해 클립보드에 데이터를 넣을 수 있음
clip.clipboard_clear() # clear를 통해 클립보드를 지울 수 있음
Tkinter를 로드하고 Tk()로 clip에 Tk 클래스를 할당합니다. 이제 clip(Tk)는 clipboard_append, clipboard_clear 등의 메소드를 이용하여 클립보드를 제어할 수 있습니다. 또 clipboard_get 과 같이 클립보드 내용을 읽어올 수 있죠. 이 부분은 Tkinter 내 clipboard 관련 메소드 찾아보시면 많은 자료가 있을거에요.
Tkinter 를 이용하여 간단한 상용구 만들기
자 이제 함수를 써서 클립보드에 데이터를 채워넣을 수 있도록 만들어봅니다.
from Tkinter import Tk
clip = Tk() # 창 생성
clip = withdraw() # 창이 보이지 않도록 너비 조정
def a(): # 편한 사용을 위한 함수1(상용구 느낌)
clip.clipboard_clear()
clip.clipboard_append("Copy data 1")
def b(): # 편한 사용을 위한 함수2(상용구 느낌)
clip.clipboard_clear()
clip.clipboard_append("Copy data 2")
간단하죠? python console 에서 a(), b() 으로 데이터를 복사하며 사용할 수 있죠.
pyperclip 활용
이외에도 pyperclip로도 가능합니다. 이 라이브러리도 클립보드 제어를 위한 라이브러리며 pip로 설치 후 import 해서 사용하시면 됩니다.
(~) #> pip install pyperclip Downloading/unpacking pyperclip Downloading pyperclip-1.5.27.zip Running setup.py (path:/tmp/pip-build-ANX1j_/pyperclip/setup.py) egg_info for package pyperclip
Installing collected packages: pyperclip Running setup.py install for pyperclip
Successfully installed pyperclip Cleaning up…
(B, 37 files)──────────[ HAHWUL ]──────────[ hahwul@09:13:15 ] (~) #> python Python 2.7.9 (default, Apr 2 2015, 15:33:21) [GCC 4.9.2] on linux2 Type “help”, “copyright”, “credits” or “license” for more information.
import pyperclip pyperclip.copy(‘Hello world!’) pyperclip.paste() ‘Hello world’