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 85 86 87 88 89 90 91 92 93
|
import tkinter as tk
from typing import Callable
import pytest
from tktooltip import ToolTip, ToolTipStatus
@pytest.fixture()
def widget():
widget = tk.Entry()
widget.pack()
widget.update()
yield widget
widget.destroy()
def test_tooltip(widget: tk.Widget):
tooltip = ToolTip(
widget,
msg="Test Tooltip",
delay=0.5,
follow=False,
refresh=0.5,
x_offset=20,
y_offset=20,
parent_kwargs={"bg": "red", "padx": 2, "pady": 2},
fg="white",
bg="red",
font=("Helvetica", 12),
)
assert tooltip.msg == "Test Tooltip"
assert tooltip.delay == 0.5
assert not tooltip.follow
assert tooltip.refresh == 0.5
assert tooltip.x_offset == 20
assert tooltip.y_offset == 20
@pytest.mark.parametrize(
"msg",
[
1,
(["text 1", 2]),
],
)
def test_tooltip_exceptions(
widget: tk.Widget,
msg: str | list[str] | Callable[[], str | list[str]],
):
with pytest.raises(TypeError):
ToolTip(widget, msg=msg) # type: ignore
def test_tooltip_follow(widget: tk.Widget):
tooltip = ToolTip(widget, msg="Test", follow=False)
widget.event_generate("<Enter>")
assert not tooltip.follow
@pytest.mark.parametrize(
"msg",
[
(lambda: "Callable Tooltip"),
(lambda: ["Callable Tooltip 1", "Callable Tooltip 2"]),
"text",
(["text 1", "text 2"]),
],
)
def test_tooltip_show(
widget: tk.Widget,
msg: str | list[str] | Callable[[], str | list[str]],
):
tooltip = ToolTip(widget, msg=msg)
assert tooltip.status == ToolTipStatus.OUTSIDE
widget.event_generate("<Enter>")
assert tooltip.status == ToolTipStatus.INSIDE
tooltip._show()
assert tooltip.status == ToolTipStatus.VISIBLE
widget.event_generate("<Leave>")
assert tooltip.status == ToolTipStatus.OUTSIDE
def test_tooltip_destroy(widget: tk.Widget):
tooltip = ToolTip(widget, msg="Test")
widget.event_generate("<Enter>")
assert tooltip.status == ToolTipStatus.INSIDE
tooltip._show()
assert tooltip.status == ToolTipStatus.VISIBLE
tooltip.destroy()
print(tooltip.bindigs)
assert tooltip.bindigs == []
|