tklib.tkgui.tktooltip のソースコード

"""
Tkinterウィジェットにツールチップ機能を提供するモジュール。

このモジュールは、指定されたTkinterウィジェットにマウスカーソルがホバーした際に
情報テキストを表示するツールチップ機能を提供します。
`tkTooltip` クラスをインスタンス化することで、任意のウィジェットにツールチップを
簡単に追加できます。

関連リンク:
:doc:`tktooltip_usage`
"""
import tkinter as tk

[ドキュメント] class tkTooltip: """ Tkinterウィジェットにツールチップ機能を提供するクラス。 このクラスは、指定されたウィジェットにマウスカーソルが乗るとツールチップを表示し、 カーソルが離れるとツールチップを非表示にする機能を提供します。 ツールチップのテキスト、背景色、前景色をカスタマイズできます。 """ def __init__(self, widget, text, bg = '#dcfbfe', fg = '#0000ff'): """ tkTooltipの新しいインスタンスを初期化します。 :param widget: ツールチップを関連付けるTkinterウィジェット。 :type widget: tkinter.Widget :param text: ツールチップに表示するテキスト。 :type text: str :param bg: ツールチップの背景色。デフォルトは'#dcfbfe' (水色)。 :type bg: str, optional :param fg: ツールチップのテキスト色。デフォルトは'#0000ff' (青)。 :type fg: str, optional """ self.widget = widget self.text = text self.bg = bg self.fg = fg self.tipwindow = None # トリガーとなるイベントにコールバック関数を設定 self.widget.bind('<Enter>', self.enter) self.widget.bind('<Leave>', self.leave) self.widget.bind("<Motion>", self.motion)
[ドキュメント] def enter(self, event): """ マウスカーソルがウィジェットに入ったときにツールチップを表示します。 このメソッドは、'<Enter>'イベントにバインドされており、 ツールチップ表示のトリガーとなります。 :param event: イベントオブジェクト。 :type event: tkinter.Event """ self.showtip()
[ドキュメント] def leave(self, event): """ マウスカーソルがウィジェットから離れたときにツールチップを非表示にします。 このメソッドは、'<Leave>'イベントにバインドされており、 ツールチップ非表示のトリガーとなります。 :param event: イベントオブジェクト。 :type event: tkinter.Event """ self.hidetip()
[ドキュメント] def motion(self, event): """ マウスカーソルがウィジェット上で移動したときに呼び出されます。 このメソッドは'<Motion>'イベントにバインドされていますが、 現在の実装では何もしません。ツールチップの位置を動的に更新する場合などに使用できます。 :param event: イベントオブジェクト。 :type event: tkinter.Event """ # self.hidetip() # self.showtip() pass
[ドキュメント] def showtip(self): """ ツールチップウィンドウを作成し表示します。 既存のツールチップウィンドウがあれば破棄し、新たにToplevelウィンドウとして ツールチップを作成します。このウィンドウはタイトルバーなしで、 関連ウィジェットの右下付近に配置されます。 """ if self.tipwindow: self.tipwindow.destroy() self.tipwindow = tk.Toplevel(self.widget) self.tipwindow.wm_overrideredirect(True) self.label = tk.Label(self.tipwindow, text = self.text, justify = tk.LEFT, background = self.bg, foreground = self.fg, relief = tk.SOLID, borderwidth = 0) self.label.pack() #ipadx = 1) x, y, cx, cy = self.widget.bbox('insert') x += self.widget.winfo_rootx() + 25 y += self.widget.winfo_rooty() + 20 self.tipwindow.wm_geometry(f'+{x}+{y}') self.tipwindow.deiconify()
[ドキュメント] def hidetip(self): """ ツールチップウィンドウを破棄して非表示にします。 ツールチップウィンドウが存在する場合、それを破棄します。 """ # self.tipwindow.withdraw() if self.tipwindow: self.tipwindow.destroy()
[ドキュメント] def main(): """ ツールチップ機能の動作を示すサンプルアプリケーションを実行します。 この関数はTkinterのルートウィンドウを作成し、ラベルウィジェットに `tkTooltip` クラスを使用してツールチップを追加する例を示します。 """ root = tk.Tk() label = tk.Label(root, text = 'Hover on the button') label.pack(pady = 50) tip = Tooltip(label, 'Button') root.mainloop()
if __name__ == "__main__": main()