updated standard tooltip to use delays and have the same style of the canvas tooltip
This commit is contained in:
parent
96abea311f
commit
b96f8ff999
2 changed files with 34 additions and 14 deletions
|
@ -5,7 +5,7 @@ from functools import partial
|
|||
from coretk.dialogs.customnodes import CustomNodesDialog
|
||||
from coretk.graph import GraphMode
|
||||
from coretk.images import ImageEnum, Images
|
||||
from coretk.tooltip import CreateToolTip
|
||||
from coretk.tooltip import Tooltip
|
||||
|
||||
|
||||
class Toolbar(tk.Frame):
|
||||
|
@ -188,7 +188,7 @@ class Toolbar(tk.Frame):
|
|||
button = tk.Button(frame, width=self.width, height=self.height, image=image)
|
||||
button.bind("<ButtonRelease-1>", lambda e: func())
|
||||
button.grid(pady=1)
|
||||
CreateToolTip(button, tooltip)
|
||||
Tooltip(button, tooltip)
|
||||
|
||||
def create_radio_button(self, frame, image, func, variable, value, tooltip_msg):
|
||||
button = tk.Radiobutton(
|
||||
|
@ -202,14 +202,14 @@ class Toolbar(tk.Frame):
|
|||
command=func,
|
||||
)
|
||||
button.grid()
|
||||
CreateToolTip(button, tooltip_msg)
|
||||
Tooltip(button, tooltip_msg)
|
||||
|
||||
def create_regular_button(self, frame, image, func, tooltip):
|
||||
button = tk.Button(
|
||||
frame, width=self.width, height=self.height, image=image, command=func
|
||||
)
|
||||
button.grid()
|
||||
CreateToolTip(button, tooltip)
|
||||
Tooltip(button, tooltip)
|
||||
|
||||
def click_selection_tool(self):
|
||||
logging.debug("clicked selection tool")
|
||||
|
@ -274,7 +274,7 @@ class Toolbar(tk.Frame):
|
|||
)
|
||||
self.node_button.bind("<ButtonRelease-1>", lambda e: self.draw_node_picker())
|
||||
self.node_button.grid()
|
||||
CreateToolTip(self.node_button, "Network-layer virtual nodes")
|
||||
Tooltip(self.node_button, "Network-layer virtual nodes")
|
||||
|
||||
def draw_network_picker(self):
|
||||
"""
|
||||
|
@ -323,7 +323,7 @@ class Toolbar(tk.Frame):
|
|||
"<ButtonRelease-1>", lambda e: self.draw_network_picker()
|
||||
)
|
||||
self.network_button.grid()
|
||||
CreateToolTip(self.network_button, "link-layer nodes")
|
||||
Tooltip(self.network_button, "link-layer nodes")
|
||||
|
||||
def draw_annotation_picker(self):
|
||||
"""
|
||||
|
@ -369,7 +369,7 @@ class Toolbar(tk.Frame):
|
|||
"<ButtonRelease-1>", lambda e: self.draw_annotation_picker()
|
||||
)
|
||||
self.annotation_button.grid()
|
||||
CreateToolTip(self.annotation_button, "background annotation tools")
|
||||
Tooltip(self.annotation_button, "background annotation tools")
|
||||
|
||||
def create_observe_button(self):
|
||||
menu_button = tk.Menubutton(
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import tkinter as tk
|
||||
from tkinter import ttk
|
||||
|
||||
|
||||
class CreateToolTip(object):
|
||||
class Tooltip(object):
|
||||
"""
|
||||
Create tool tip for a given widget
|
||||
"""
|
||||
|
@ -9,10 +10,29 @@ class CreateToolTip(object):
|
|||
def __init__(self, widget, text="widget info"):
|
||||
self.widget = widget
|
||||
self.text = text
|
||||
self.widget.bind("<Enter>", self.enter)
|
||||
self.widget.bind("<Leave>", self.close)
|
||||
self.widget.bind("<Enter>", self.on_enter)
|
||||
self.widget.bind("<Leave>", self.on_leave)
|
||||
self.waittime = 400
|
||||
self.id = None
|
||||
self.tw = None
|
||||
|
||||
def on_enter(self, event=None):
|
||||
self.schedule()
|
||||
|
||||
def on_leave(self, event=None):
|
||||
self.unschedule()
|
||||
self.close(event)
|
||||
|
||||
def schedule(self):
|
||||
self.unschedule()
|
||||
self.id = self.widget.after(self.waittime, self.enter)
|
||||
|
||||
def unschedule(self):
|
||||
id_ = self.id
|
||||
self.id = None
|
||||
if id_:
|
||||
self.widget.after_cancel(id_)
|
||||
|
||||
def enter(self, event=None):
|
||||
x, y, cx, cy = self.widget.bbox("insert")
|
||||
x += self.widget.winfo_rootx()
|
||||
|
@ -21,13 +41,13 @@ class CreateToolTip(object):
|
|||
self.tw = tk.Toplevel(self.widget)
|
||||
self.tw.wm_overrideredirect(True)
|
||||
self.tw.wm_geometry("+%d+%d" % (x, y))
|
||||
label = tk.Label(
|
||||
label = ttk.Label(
|
||||
self.tw,
|
||||
text=self.text,
|
||||
justify=tk.LEFT,
|
||||
background="#ffffe6",
|
||||
relief="solid",
|
||||
borderwidth=1,
|
||||
background="#FFFFEA",
|
||||
relief=tk.SOLID,
|
||||
borderwidth=0,
|
||||
)
|
||||
label.grid(padx=1)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue