Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from tkinter import *
- import re
- import tkinter as tk
- class HoverInfo(Menu):
- def __init__(self, parent, text, command=None):
- self._com = command
- Menu.__init__(self,parent, tearoff=0)
- if not isinstance(text, str):
- raise TypeError('Trying to initialise a Hover Menu with a non string type: ' + text.__class__.__name__)
- toktext=re.split('n', text)
- for t in toktext:
- self.add_command(label = t)
- self._displayed=False
- self.master.bind("<Enter>",self.Display )
- self.master.bind("<Leave>",self.Remove )
- def __del__(self):
- self.master.unbind("<Enter>")
- self.master.unbind("<Leave>")
- def Display(self,event):
- if not self._displayed:
- self._displayed=True
- self.post(event.x_root, event.y_root)
- if self._com != None:
- self.master.unbind_all("<Return>")
- self.master.bind_all("<Return>", self.Click)
- def Remove(self, event):
- if self._displayed:
- self._displayed=False
- self.unpost()
- if self._com != None:
- self.unbind_all("<Return>")
- def Click(self, event):
- self._com()
- def HelloWorld():
- print('Hello World')
- def vp_start_gui():
- global val, w, root, o
- root = Tk()
- canvas = tk.Canvas(root)
- scroll = tk.Scrollbar(root, orient='horizontal', command=canvas.xview)
- canvas.configure(xscrollcommand=scroll.set)
- frame = tk.Frame(canvas) # frame does not get pack() as it needs to be embedded into canvas throught canvas.
- scroll.pack(side='bottom', fill='x')
- canvas.pack(fill='both', expand='yes')
- canvas.create_window((0,0), window=frame, anchor='nw')
- frame.bind('<Configure>', lambda x: canvas.configure(scrollregion=canvas.bbox('all'))) # lambda function
- journal = tk.Text(frame, width = 75, height = 39)
- journal.configure(background="#f2f2f2")
- journal.configure(borderwidth="3")
- journal.configure(relief="groove")
- journal.grid() # grid instead
- journal.insert("end", "I want tooltip over this text only")
- hover = HoverInfo(journal,'while hovering press return n for an exciting msg', HelloWorld)
- root.mainloop()
- if __name__ == '__main__':
- vp_start_gui()
Add Comment
Please, Sign In to add comment