이전 포스팅
2022.11.28 - [기타/tkinter 한꼬집씩만 따라해보기] - 29. 스핀박스 위젯 추가하기
이번 포스팅에서는 : 위젯에 툴팁 붙이기
지금까지 여러가지 위젯과 레이아웃, 이벤트사용방법 등에 대해 간략히 알려드렸습니다.
이번에 소개해드릴 기능은 바로 "툴팁"입니다.
툴팁이 뭔지 모르시는 분들도, 은연중에 이런저런 앱에서 많이 봐 오셨을 것이라 생각합니다.
아래와 같이 엔트리 등의 위젯에 부가설명을 넣을 수 있는 기능입니다.
tkinter에서는 기본적으로 툴팁을 제공하지는 않습니다.
대신 유능한 프로그래머들이 tkinter에서 간편하게 툴팁을 생성할 수 있도록
서드파티 모듈을 만들어 두었습니다.
커맨드프롬프트에서 pip install tkinter-tooltip으로 tktooltip 모듈을 설치합니다.
사용방법은 아래와 같습니다.
간략한 예시코드를 보여드리겠습니다.
import tkinter as tk
from tktooltip import ToolTip
win = tk.Tk()
win.geometry("200x80")
button = tk.Button(win, text="아무 기능 없는 버튼")
button.grid(row=0, column=0)
ToolTip(button, bg="#ffffe0", msg="정말 아무 기능 없는 버튼임", delay=0.1)
win.mainloop()
실행해보면,
이렇게 서드파티 모듈의 힘을 빌려서
툴팁을 간편하게 붙일 수 있습니다.
부록
아래와 같은 코드로 번거롭지만 직접 툴팁을 제작해서 사용할 수 있기는 합니다.
더보기
import tkinter as tk
class ToolTip:
def __init__(self, widget, tip_text=None):
self.widget = widget
self.tip_text = tip_text
widget.bind('<Enter>', self.mouse_enter)
widget.bind('<Leave>', self.mouse_leave)
def mouse_enter(self, _event):
self.show_tooltip()
def mouse_leave(self, _event):
self.hide_tooltip()
def show_tooltip(self):
if self.tip_text:
x_left = self.widget.winfo_rootx() # get widget top-left coordinates
y_top = self.widget.winfo_rooty() - 18 # place tooltip above widget or it flickers
self.tip_window = tk.Toplevel(self.widget) # create Toplevel window; parent=widget
self.tip_window.overrideredirect(True) # remove surrounding toolbar window
self.tip_window.geometry(f"+{x_left}+{y_top}") # position tooltip
label = tk.Label(self.tip_window, text=self.tip_text, justify=tk.LEFT,
background="#ffffe0", relief=tk.SOLID, borderwidth=1,
font=("tahoma", "8", "normal"))
label.pack(ipadx=1)
def hide_tooltip(self):
if self.tip_window:
self.tip_window.destroy()
win = tk.Tk()
win.geometry("250x80")
label = tk.Label(win, text="레이블에 마우스를 올리면 \n툴팁이 짜잔~")
label.grid(column=0, row=0, sticky="we")
ToolTip(label, '툴팁이 짜잔~ 하고 \n나타납니다.')
win.mainloop()
디테일한 세팅이 가능할 것 같다는 장점이 있을 것처럼 느껴지지만
tktooltip에서도 동급의 디테일한 세팅이 가능합니다.
다음 포스팅
2022.11.28 - [기타/tkinter 한꼬집씩만 따라해보기] - 31. 커스텀 테마 적용하기
'GUI 튜토리얼 > tkinter 한꼬집씩만 따라해보기' 카테고리의 다른 글
31. 커스텀 테마 적용하기 (3) | 2022.11.28 |
---|---|
29. 스핀박스 위젯 추가하기 (0) | 2022.11.28 |
28. 메인윈도우에 아이콘 추가하기 (0) | 2022.11.28 |
댓글