1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
from tkcalendar.tooltip import Tooltip, TooltipWrapper
from tests import BaseWidgetTest
try:
from tkinter import ttk
import tkinter as tk
except ImportError:
import Tkinter as tk
import ttk
class TestTooltip(BaseWidgetTest):
def test_tooltip(self):
t = Tooltip(self.window, text='Hi!', style='my.TLabel', alpha=0.5)
self.window.update()
self.assertEqual(t.keys(), ['alpha'] + ttk.Label().keys())
self.assertEqual(str(t.cget('compound')), 'left')
self.assertEqual(t.cget('text'), 'Hi!')
self.assertEqual(t.cget('alpha'), 0.5)
self.assertEqual(t.cget('style'), 'my.TLabel')
t.configure(text='Hello', style='test.TLabel',
image=None, alpha=0.75, compound='right')
self.assertEqual(str(t.cget('compound')), 'right')
self.assertEqual(t.cget('text'), 'Hello')
self.assertEqual(t.cget('alpha'), 0.75)
self.assertEqual(t.cget('style'), 'test.TLabel')
self.assertEqual(t.cget('image'), '')
class TestTooltipWrapper(BaseWidgetTest):
def test_tooltipwrapper_init(self):
TooltipWrapper(self.window, delay=3000)
with self.assertRaises(ValueError):
TooltipWrapper(self.window, delay='a')
def test_tooltip_config(self):
tw = TooltipWrapper(self.window)
tw.configure(alpha=0.3, style='hello.TLabel', delay=30)
self.assertEqual(tw['alpha'], 0.3)
self.assertEqual(tw.tooltip['alpha'], 0.3)
self.assertEqual(tw.cget('delay'), 30)
self.assertEqual(tw.cget('style'), 'hello.TLabel')
self.assertEqual(tw.tooltip.cget('style'), 'hello.TLabel')
with self.assertRaises(ValueError):
tw['delay'] = 's'
def test_tooltipwrapper(self):
b1 = ttk.Button(self.window, text='Button 1')
b2 = tk.Button(self.window, text='Button 2')
b1.pack()
b2.pack()
self.window.update()
tw = TooltipWrapper(self.window, delay=1)
tw.add_tooltip(b1, "tooltip 1")
tw.add_tooltip(b2, "tooltip 2")
self.window.update()
def removal_tests():
tw.remove_tooltip(self.window)
tw.remove_tooltip(b1)
self.window.update()
b1.event_generate('<Enter>', x=0, y=0)
self.window.update()
self.assertIsNone(tw.current_widget)
tw.remove_all()
self.assertFalse(tw.widgets)
def test_leave(button):
button.event_generate('<Leave>', x=0, y=0)
self.window.update()
self.assertFalse(tw.tooltip.winfo_ismapped())
self.assertIsNone(tw.current_widget)
def test(button):
button.event_generate('<Enter>', x=0, y=0)
self.window.update()
self.window.after(5, self.assertEqual(tw.current_widget, button))
self.window.after(7, lambda: self.assertTrue(tw.tooltip.winfo_ismapped()))
self.window.after(9, test_leave)
test(b1)
self.window.after(11, lambda: test(b2))
self.window.after(22, removal_tests)
|