[PYTHON] Tkinter module을 이용한 Clipboard(클립보드) 제어/상용구 만들기

일을 하다보면 항상 같은 말을 자주 써야할 상황이 많이 생깁니다. 오늘은 평소에 제가 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’