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 위젯과 함께 하이퍼링크가 적용된 키워드가 포함된 창이 나타납니다.

생성된 링크를 클릭할 때마다 지정된 URL이 기본 웹 브라우저에서 열립니다.
핵심 포인트 정리
- HyperlinkManager: Text 위젯에 클릭 가능한 하이퍼링크 태그를 추가해 주는 헬퍼 클래스입니다.
- hyperlink.add(함수): 링크를 클릭했을 때 실행할 콜백 함수를 등록합니다.
- functools.partial: 인자가 미리 지정된 함수를 생성하여 콜백으로 전달할 때 유용합니다.
- webbrowser 모듈: 파이썬에서 기본 웹 브라우저를 제어하여 URL을 열 수 있게 해줍니다.
이 방식을 응용하면 도움말 문서, 채팅 애플리케이션, 리치 텍스트 편집기 등 다양한 Tkinter 프로그램에서 클릭 가능한 링크를 손쉽게 구현할 수 있습니다.