Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter Text 위젯에서 하이퍼링크 만드는 방법

Tkinter의 Text 위젯은 주로 여러 줄로 된 사용자 입력을 받아들이는 용도로 사용됩니다. 그런데 텍스트 문서에는 하이퍼링크가 포함되어야 할 때도 있습니다. 예를 들어 사용자를 특정 웹 페이지로 이동시키고 싶은 경우가 대표적입니다.

Tkinter Text 위젯은 기본적으로 하이퍼링크 기능을 제공하지 않지만, Python의 HyperlinkManager 코드 조각(snippet)을 활용하면 손쉽게 구현할 수 있습니다.

HyperlinkManager란?

HyperlinkManager는 Text 위젯 내의 특정 키워드나 텍스트 범위에 하이퍼링크 태그(tag)를 자동으로 추가해 주는 유틸리티 클래스입니다. 이 클래스를 사용하면 클릭 가능한 링크를 콜백 함수와 함께 연결할 수 있어, 마치 웹 브라우저의 링크처럼 동작하는 텍스트를 만들 수 있습니다.

HyperlinkManager 코드 조각은 아래 GitHub 저장소에서 다운로드할 수 있습니다.

https://github.com/codewithdev/Code-Snippets/blob/master/tkinter/tkHyperlinkManager.py/

파일을 다운로드한 후, 프로젝트 폴더에 저장하고 다음과 같이 임포트하여 사용하면 됩니다.

from tkHyperLinkManager import HyperlinkManager

예제 코드

다음은 Text 위젯 안에 하이퍼링크를 생성하고, 클릭 시 웹 브라우저로 해당 URL을 여는 전체 예제입니다.

# 필요한 라이브러리 임포트
from tkinter import *
from tkHyperLinkManager import HyperlinkManager
import webbrowser
from functools import partial

# tkinter 프레임 인스턴스 생성
win = Tk()
win.geometry("700x350")

# 콜백 함수 정의: 클릭 시 해당 URL을 새 탭으로 열기
def callback(url):
    webbrowser.open_new_tab(url)

# 링크를 표시할 Text 위젯 생성
text = Text(win)
text.insert(END, "안녕하세요, 환영합니다! ")
text.pack()

# HyperlinkManager 인스턴스 생성
hyperlink = HyperlinkManager(text)

# 하이퍼링크가 적용된 텍스트 삽입
text.insert(END,
"TutorialsPoint", hyperlink.add(partial(webbrowser.open, "https://www.tutorialspoint.com")))

win.mainloop()

실행 결과

위 코드를 실행하면 Text 위젯과 함께 하이퍼링크가 적용된 키워드가 포함된 창이 나타납니다.

Tkinter Text 위젯에서 하이퍼링크 만드는 방법

생성된 링크를 클릭할 때마다 지정된 URL이 기본 웹 브라우저에서 열립니다.

핵심 포인트 정리

- HyperlinkManager: Text 위젯에 클릭 가능한 하이퍼링크 태그를 추가해 주는 헬퍼 클래스입니다.
- hyperlink.add(함수): 링크를 클릭했을 때 실행할 콜백 함수를 등록합니다.
- functools.partial: 인자가 미리 지정된 함수를 생성하여 콜백으로 전달할 때 유용합니다.
- webbrowser 모듈: 파이썬에서 기본 웹 브라우저를 제어하여 URL을 열 수 있게 해줍니다.

이 방식을 응용하면 도움말 문서, 채팅 애플리케이션, 리치 텍스트 편집기 등 다양한 Tkinter 프로그램에서 클릭 가능한 링크를 손쉽게 구현할 수 있습니다.