From 2a3bf2bbcbe1c8efbdab2264befe941ad42e9495 Mon Sep 17 00:00:00 2001 From: punix Date: Mon, 21 Apr 2025 13:29:36 +0200 Subject: [PATCH] add new class for tooltip --- __pycache__/cls_mth_fc.cpython-312.pyc | Bin 16029 -> 18172 bytes cls_mth_fc.py | 38 +++++++++++++++++++++++++ wirepy.py | 2 +- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/__pycache__/cls_mth_fc.cpython-312.pyc b/__pycache__/cls_mth_fc.cpython-312.pyc index d2a4eeb70a6cfff52d47e63b06f271f68da8096a..18c17c46f804594ebb88a8cfff2db26712b80b78 100644 GIT binary patch delta 1996 zcmaJ>?@tqF9Dkm>UVB`xK%qsLP;Ldqf?=q`O;D$c(=0PAP8YYbthU@CC8dW?Z$hz6 zH6dGBW`Nx?8jT5VOVnvHmuAWSf&EC9Y;@q-TzugR-}qvQh>3B!AK&NNIy7@n+VAuI z{oM2YeD2OAAD+gQKRFx%g0;8JI>dC(R@USBuiGLRyY)}7RL`J&NUohkvgw( z#u;B-_FMe<+6n<9bQ0Yb8g;qp2zT3x>UQcsG;PF!ez&QIw^g)*tEN|f-m{UZvgsku zhjxi;Uty88W|@()_dJJrypVmp&1Pd5oPDd)$>Of;@TQkA-ktq&bB7hbrvLV0H*VF% zZExc1+0eFA82_o?>^W%fbmBWff;A8c#$wW-N~Drs5=?)1L>(pC z6V8+}9vm5sC_QEWhDb1^L^ev^gG1_=q!l|$YE&})UZ2^D7KK(9h2GONHToY_#XzYn z93519ijAaTRF)w4E|f{(m^2zBM2Tvh#T&4zhGGGo+AH6iGfChC3OouY7_b1*;*t?q z>gX95} zn>}LmhJYPegHQ??d>{~xhP6OoqPm1(XW65}ZDac(`y?vVHKr{e*$b|E*eVJhZ`!iN zuPyN6w0+8+=j(HPeWqc4PrkJ~*V?_rZ+%MS8o!k^K*PR);>9~bhsDF+oclvKan2l; z>3>Yb#Du1@xuawzGF;;Wvzc)8QS>4(azT=M}pX3tUuv0(gt#w!~moflSPR~hh2bW;Z zBAH9DXVE!}p0m01{1z9R;ON8Ft+C2BnV0!16_>5W%OtG{>+l-D{+Sd;0J_j;Si{kn zLbO|SFt=PF4*h{U3@)Zd!ZJyLO|F9QaYY7Li4qAbgN8k%5?LWY4sD1eX;y+}iR2;G zDOpU&fgvGv+^_>*2GsyjRjq8KOe;=iY3j!yjM}l0fO=dZ1o%S~IZTuR4Jt&qfeT!r+wS@G2R2+`w@%Oq(#;7`X&W%mxBzMi-?TB7cFHaFt0GOReJU z8R!-J1>(RodsW`<`PJ^3moJ1r3m3$i8}5d={@MP#dtJ`GZhmOd{oIt0#_3Jz;Ec1t zSELV3_fPfb9j!S>>!M@*#hRR>Bgc27@&CoHx2#KD=sn+iQTyt|r4x%Sy$gJ=N$E_e zzzccaljA)ZZHaFMYr1l(GULo_%Cuw-WR7J9W=<^eEjO!c=J;7YQ#0Rs!FS$wb>EN9 zg#&LayzO7A?oV?C-Z3pq38zJq?Ip6q^ z=MwJoF-5%3ffsa&38|vPq{oy8|2OFW4u195;UZ0Khw!So7sTqk*qjra^I}_0Y+Dk2 z1@HR0^qy;C^KA}^&E}Pe3o3m!eWu5Cm|%J;MVHW%NDmd1%thGmQ;mu#dRQGOlW3XY zIsQ%!$GxypDRS<+jV#wzETM@$rmxS}q(9jH4Zg2m+0i64K_&c9>}P#(#}}J-Vcfoq js9f30wBv?*ew@VExs0g1v&$mj+I#h0+;#_nFx&nEh9(b& delta 254 zcmey<%Q&}|?=&wj7XuJzuV%?OWH6CWg0W|#dJZF_@Z>3s3M`dOnj)LeFfNwnWMgDt zXkhrjB{{i5Hi7wpsO{vtvO0_$ley%q*w{F=9tc`Z_L0+J;$@p$CD+9*%c}L6nSo8{ zBa`fAe)(_?#)1|ad-fk}%|@_Q6x9V4UQM+Ol2*@=aVQMgDFs2Bi!6GN^5 diff --git a/cls_mth_fc.py b/cls_mth_fc.py index 48025c6..fa16c27 100755 --- a/cls_mth_fc.py +++ b/cls_mth_fc.py @@ -389,3 +389,41 @@ def if_tip(path): else: tip = True return tip + +class Tooltip: + """ + class for Tooltip + + imoprt Tooltip + + example: Tooltip(label, "Show tooltip on label") + examble: Tooltip(button, "Show tooltip on button") + info: label and button is parrent. + """ + def __init__(self, widget, text): + self.widget = widget + self.text = text + self.tooltip_window = None + self.widget.bind("", self.show_tooltip) + self.widget.bind("", self.hide_tooltip) + + def show_tooltip(self, event=None): + if self.tooltip_window or not self.text: + return + + x, y, _, _ = self.widget.bbox("insert") + x += self.widget.winfo_rootx() + 25 + y += self.widget.winfo_rooty() + 20 + self.tooltip_window = tw = tk.Toplevel(self.widget) + tw.wm_overrideredirect(True) + tw.wm_geometry(f"+{x}+{y}") + + label = tk.Label(tw, text=self.text, relief="solid", borderwidth=1, padx=5, pady=5) + label.grid() + + def hide_tooltip(self, event=None): + if self.tooltip_window: + self.tooltip_window.destroy() + self.tooltip_window = None + + \ No newline at end of file diff --git a/wirepy.py b/wirepy.py index c5108ab..c073737 100755 --- a/wirepy.py +++ b/wirepy.py @@ -14,7 +14,7 @@ import tkinter as tk from pathlib import Path from subprocess import check_call from tkinter import filedialog, ttk, TclError -from cls_mth_fc import Tunnel, Create, msg_window, if_tip, GiteaUpdate, uos +from cls_mth_fc import Tooltip, Tunnel, Create, msg_window, if_tip, GiteaUpdate, uos uos() Create.dir_and_files()