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.dialogs.customnodes import CustomNodesDialog
|
||||||
from coretk.graph import GraphMode
|
from coretk.graph import GraphMode
|
||||||
from coretk.images import ImageEnum, Images
|
from coretk.images import ImageEnum, Images
|
||||||
from coretk.tooltip import CreateToolTip
|
from coretk.tooltip import Tooltip
|
||||||
|
|
||||||
|
|
||||||
class Toolbar(tk.Frame):
|
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 = tk.Button(frame, width=self.width, height=self.height, image=image)
|
||||||
button.bind("<ButtonRelease-1>", lambda e: func())
|
button.bind("<ButtonRelease-1>", lambda e: func())
|
||||||
button.grid(pady=1)
|
button.grid(pady=1)
|
||||||
CreateToolTip(button, tooltip)
|
Tooltip(button, tooltip)
|
||||||
|
|
||||||
def create_radio_button(self, frame, image, func, variable, value, tooltip_msg):
|
def create_radio_button(self, frame, image, func, variable, value, tooltip_msg):
|
||||||
button = tk.Radiobutton(
|
button = tk.Radiobutton(
|
||||||
|
@ -202,14 +202,14 @@ class Toolbar(tk.Frame):
|
||||||
command=func,
|
command=func,
|
||||||
)
|
)
|
||||||
button.grid()
|
button.grid()
|
||||||
CreateToolTip(button, tooltip_msg)
|
Tooltip(button, tooltip_msg)
|
||||||
|
|
||||||
def create_regular_button(self, frame, image, func, tooltip):
|
def create_regular_button(self, frame, image, func, tooltip):
|
||||||
button = tk.Button(
|
button = tk.Button(
|
||||||
frame, width=self.width, height=self.height, image=image, command=func
|
frame, width=self.width, height=self.height, image=image, command=func
|
||||||
)
|
)
|
||||||
button.grid()
|
button.grid()
|
||||||
CreateToolTip(button, tooltip)
|
Tooltip(button, tooltip)
|
||||||
|
|
||||||
def click_selection_tool(self):
|
def click_selection_tool(self):
|
||||||
logging.debug("clicked selection tool")
|
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.bind("<ButtonRelease-1>", lambda e: self.draw_node_picker())
|
||||||
self.node_button.grid()
|
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):
|
def draw_network_picker(self):
|
||||||
"""
|
"""
|
||||||
|
@ -323,7 +323,7 @@ class Toolbar(tk.Frame):
|
||||||
"<ButtonRelease-1>", lambda e: self.draw_network_picker()
|
"<ButtonRelease-1>", lambda e: self.draw_network_picker()
|
||||||
)
|
)
|
||||||
self.network_button.grid()
|
self.network_button.grid()
|
||||||
CreateToolTip(self.network_button, "link-layer nodes")
|
Tooltip(self.network_button, "link-layer nodes")
|
||||||
|
|
||||||
def draw_annotation_picker(self):
|
def draw_annotation_picker(self):
|
||||||
"""
|
"""
|
||||||
|
@ -369,7 +369,7 @@ class Toolbar(tk.Frame):
|
||||||
"<ButtonRelease-1>", lambda e: self.draw_annotation_picker()
|
"<ButtonRelease-1>", lambda e: self.draw_annotation_picker()
|
||||||
)
|
)
|
||||||
self.annotation_button.grid()
|
self.annotation_button.grid()
|
||||||
CreateToolTip(self.annotation_button, "background annotation tools")
|
Tooltip(self.annotation_button, "background annotation tools")
|
||||||
|
|
||||||
def create_observe_button(self):
|
def create_observe_button(self):
|
||||||
menu_button = tk.Menubutton(
|
menu_button = tk.Menubutton(
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
|
from tkinter import ttk
|
||||||
|
|
||||||
|
|
||||||
class CreateToolTip(object):
|
class Tooltip(object):
|
||||||
"""
|
"""
|
||||||
Create tool tip for a given widget
|
Create tool tip for a given widget
|
||||||
"""
|
"""
|
||||||
|
@ -9,10 +10,29 @@ class CreateToolTip(object):
|
||||||
def __init__(self, widget, text="widget info"):
|
def __init__(self, widget, text="widget info"):
|
||||||
self.widget = widget
|
self.widget = widget
|
||||||
self.text = text
|
self.text = text
|
||||||
self.widget.bind("<Enter>", self.enter)
|
self.widget.bind("<Enter>", self.on_enter)
|
||||||
self.widget.bind("<Leave>", self.close)
|
self.widget.bind("<Leave>", self.on_leave)
|
||||||
|
self.waittime = 400
|
||||||
|
self.id = None
|
||||||
self.tw = 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):
|
def enter(self, event=None):
|
||||||
x, y, cx, cy = self.widget.bbox("insert")
|
x, y, cx, cy = self.widget.bbox("insert")
|
||||||
x += self.widget.winfo_rootx()
|
x += self.widget.winfo_rootx()
|
||||||
|
@ -21,13 +41,13 @@ class CreateToolTip(object):
|
||||||
self.tw = tk.Toplevel(self.widget)
|
self.tw = tk.Toplevel(self.widget)
|
||||||
self.tw.wm_overrideredirect(True)
|
self.tw.wm_overrideredirect(True)
|
||||||
self.tw.wm_geometry("+%d+%d" % (x, y))
|
self.tw.wm_geometry("+%d+%d" % (x, y))
|
||||||
label = tk.Label(
|
label = ttk.Label(
|
||||||
self.tw,
|
self.tw,
|
||||||
text=self.text,
|
text=self.text,
|
||||||
justify=tk.LEFT,
|
justify=tk.LEFT,
|
||||||
background="#ffffe6",
|
background="#FFFFEA",
|
||||||
relief="solid",
|
relief=tk.SOLID,
|
||||||
borderwidth=1,
|
borderwidth=0,
|
||||||
)
|
)
|
||||||
label.grid(padx=1)
|
label.grid(padx=1)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue