Guest User

Untitled

a guest
Jul 16th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. from tkinter import *
  2. import re
  3. import tkinter as tk
  4.  
  5. class HoverInfo(Menu):
  6. def __init__(self, parent, text, command=None):
  7. self._com = command
  8. Menu.__init__(self,parent, tearoff=0)
  9. if not isinstance(text, str):
  10. raise TypeError('Trying to initialise a Hover Menu with a non string type: ' + text.__class__.__name__)
  11. toktext=re.split('n', text)
  12. for t in toktext:
  13. self.add_command(label = t)
  14. self._displayed=False
  15. self.master.bind("<Enter>",self.Display )
  16. self.master.bind("<Leave>",self.Remove )
  17.  
  18. def __del__(self):
  19. self.master.unbind("<Enter>")
  20. self.master.unbind("<Leave>")
  21.  
  22. def Display(self,event):
  23. if not self._displayed:
  24. self._displayed=True
  25. self.post(event.x_root, event.y_root)
  26. if self._com != None:
  27. self.master.unbind_all("<Return>")
  28. self.master.bind_all("<Return>", self.Click)
  29.  
  30. def Remove(self, event):
  31. if self._displayed:
  32. self._displayed=False
  33. self.unpost()
  34. if self._com != None:
  35. self.unbind_all("<Return>")
  36.  
  37. def Click(self, event):
  38. self._com()
  39.  
  40.  
  41.  
  42. def HelloWorld():
  43. print('Hello World')
  44.  
  45.  
  46. def vp_start_gui():
  47. global val, w, root, o
  48. root = Tk()
  49. canvas = tk.Canvas(root)
  50. scroll = tk.Scrollbar(root, orient='horizontal', command=canvas.xview)
  51. canvas.configure(xscrollcommand=scroll.set)
  52. frame = tk.Frame(canvas) # frame does not get pack() as it needs to be embedded into canvas throught canvas.
  53. scroll.pack(side='bottom', fill='x')
  54. canvas.pack(fill='both', expand='yes')
  55. canvas.create_window((0,0), window=frame, anchor='nw')
  56. frame.bind('<Configure>', lambda x: canvas.configure(scrollregion=canvas.bbox('all'))) # lambda function
  57.  
  58. journal = tk.Text(frame, width = 75, height = 39)
  59. journal.configure(background="#f2f2f2")
  60. journal.configure(borderwidth="3")
  61. journal.configure(relief="groove")
  62. journal.grid() # grid instead
  63. journal.insert("end", "I want tooltip over this text only")
  64. hover = HoverInfo(journal,'while hovering press return n for an exciting msg', HelloWorld)
  65.  
  66.  
  67. root.mainloop()
  68.  
  69.  
  70. if __name__ == '__main__':
  71. vp_start_gui()
Add Comment
Please, Sign In to add comment