tkfluent 0.1.5__py3-none-any.whl → 0.1.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- tkflu/__main__.py +15 -11
- tkflu/badge.py +12 -4
- tkflu/button.py +12 -3
- tkflu/demos/demo.py +137 -0
- tkflu/demos/designer.py +19 -4
- tkflu/designs/__init__.py +2 -1
- tkflu/designs/button.py +4 -4
- tkflu/designs/renderer.py +19 -0
- tkflu/designs/window.py +4 -2
- tkflu/entry.py +8 -4
- tkflu/frame.py +3 -2
- tkflu/listbox.py +1 -1
- tkflu/menu.py +13 -13
- tkflu/menubar.py +9 -11
- tkflu/popupmenu.py +1 -1
- tkflu/popupwindow.py +24 -4
- tkflu/scrollbar.py +2 -2
- tkflu/slider.py +52 -25
- tkflu/text.py +10 -3
- tkflu/togglebutton.py +9 -3
- tkflu/tooltip.py +2 -2
- {tkfluent-0.1.5.dist-info → tkfluent-0.1.6.dist-info}/METADATA +2 -2
- {tkfluent-0.1.5.dist-info → tkfluent-0.1.6.dist-info}/RECORD +24 -22
- {tkfluent-0.1.5.dist-info → tkfluent-0.1.6.dist-info}/WHEEL +0 -0
tkflu/__main__.py
CHANGED
@@ -3,8 +3,9 @@ from tkinter import *
|
|
3
3
|
from tkinter.font import *
|
4
4
|
|
5
5
|
blue_primary_color()
|
6
|
-
set_animation_steps(
|
7
|
-
set_animation_step_time(
|
6
|
+
set_animation_steps(0)
|
7
|
+
set_animation_step_time(0)
|
8
|
+
set_renderer(0)
|
8
9
|
|
9
10
|
def togglestate():
|
10
11
|
if button1.dcget("state") == NORMAL:
|
@@ -38,32 +39,35 @@ thememanager = FluThemeManager()
|
|
38
39
|
|
39
40
|
menubar = FluMenuBar(root)
|
40
41
|
menubar.add_command(
|
41
|
-
label="FluMenu1",
|
42
|
+
label="FluMenu1", command=lambda: print("FluMenu1 -> Clicked")
|
42
43
|
)
|
43
44
|
|
44
45
|
menu1 = FluMenu()
|
45
46
|
menu1.add_command(
|
46
|
-
label="FluMenu2-1",
|
47
|
+
label="FluMenu2-1", command=lambda: print("FluMenu2-1 -> Clicked")
|
47
48
|
)
|
48
49
|
menubar.add_cascade(
|
49
|
-
label="FluMenu2",
|
50
|
+
label="FluMenu2", menu=menu1
|
50
51
|
)
|
51
52
|
|
52
53
|
menu2 = FluMenu(height=93)
|
53
54
|
menu2.add_command(
|
54
|
-
label="FluMenu3-1",
|
55
|
+
label="FluMenu3-1", command=lambda: print("FluMenu3-1 -> Clicked")
|
55
56
|
)
|
56
57
|
|
57
|
-
menu3 = FluMenu(height=
|
58
|
+
menu3 = FluMenu(height=93)
|
58
59
|
menu3.add_command(
|
59
|
-
label="FluMenu3-2-1",
|
60
|
+
label="FluMenu3-2-1", command=lambda: print("FluMenu3-2-1 -> Clicked")
|
61
|
+
)
|
62
|
+
menu3.add_command(
|
63
|
+
label="FluMenu3-2-2", command=lambda: print("FluMenu3-2-2 -> Clicked")
|
60
64
|
)
|
61
65
|
|
62
66
|
menu2.add_cascade(
|
63
|
-
label="FluMenu3-2",
|
67
|
+
label="FluMenu3-2", menu=menu3
|
64
68
|
)
|
65
69
|
menubar.add_cascade(
|
66
|
-
label="FluMenu3",
|
70
|
+
label="FluMenu3", menu=menu2
|
67
71
|
)
|
68
72
|
|
69
73
|
menubar.pack(fill="x")
|
@@ -118,7 +122,7 @@ entry1.pack(fill="x", padx=5, pady=5)
|
|
118
122
|
text1 = FluText(frame)
|
119
123
|
text1.pack(fill="x", padx=5, pady=5)
|
120
124
|
|
121
|
-
slider1 = FluSlider(frame, value=5, min=0, max=10, tick=
|
125
|
+
slider1 = FluSlider(frame, value=5, min=0, max=10, tick=True, changed=lambda: print(f"FluSlider -> Changed -> Value: {slider1.dcget('value')}"))
|
122
126
|
slider1.pack(fill="x", padx=5, pady=5)
|
123
127
|
|
124
128
|
"""listbox1 = FluListBox(frame)
|
tkflu/badge.py
CHANGED
@@ -36,7 +36,7 @@ class FluBadgeCanvas(DCanvas):
|
|
36
36
|
draw = FluBadgeDraw
|
37
37
|
|
38
38
|
def create_round_rectangle(self,
|
39
|
-
x1, y1, x2, y2, temppath=None,
|
39
|
+
x1, y1, x2, y2, temppath=None, temppath2=None,
|
40
40
|
fill="transparent", fill_opacity=1,
|
41
41
|
outline="black", outline_opacity=1, width=1
|
42
42
|
):
|
@@ -45,7 +45,10 @@ class FluBadgeCanvas(DCanvas):
|
|
45
45
|
fill=fill, fill_opacity=fill_opacity,
|
46
46
|
outline=outline, outline_opacity=outline_opacity, width=width
|
47
47
|
)
|
48
|
-
|
48
|
+
|
49
|
+
from .designs.renderer import get_renderer
|
50
|
+
|
51
|
+
self._tkimg = self.svgdraw.create_svg_image(self._img, temppath2, way=get_renderer())
|
49
52
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
50
53
|
|
51
54
|
create_roundrect = create_round_rectangle
|
@@ -130,9 +133,14 @@ class FluBadge(FluBadgeCanvas, DDrawWidget, FluToolTipBase):
|
|
130
133
|
_border_color_opacity = self.attributes.border_color_opacity
|
131
134
|
_border_width = self.attributes.border_width
|
132
135
|
_text_color = self.attributes.text_color
|
133
|
-
|
136
|
+
from .designs.renderer import get_renderer
|
137
|
+
width = self.winfo_width()
|
138
|
+
height = self.winfo_height()
|
139
|
+
if get_renderer() == 1:
|
140
|
+
width -= 1
|
141
|
+
height -= 1
|
134
142
|
self.element_border = self.create_round_rectangle(
|
135
|
-
0, 0,
|
143
|
+
0, 0, width, height, temppath=self.temppath, temppath2=self.temppath3,
|
136
144
|
fill=_back_color, fill_opacity=_back_opacity,
|
137
145
|
outline=_border_color, outline_opacity=_border_color_opacity, width=_border_width
|
138
146
|
)
|
tkflu/button.py
CHANGED
@@ -72,7 +72,7 @@ class FluButtonCanvas(DCanvas):
|
|
72
72
|
|
73
73
|
def create_round_rectangle(self,
|
74
74
|
x1: Union[int, float], y1: Union[int, float], x2: Union[int, float], y2: Union[int, float],
|
75
|
-
r1: Union[int, float], r2: Union[int, float] = None, temppath: Union[str, None] = None,
|
75
|
+
r1: Union[int, float], r2: Union[int, float] = None, temppath: Union[str, None] = None, temppath2: Union[str, None] = None,
|
76
76
|
fill: Union[str, tuple]="transparent", fill_opacity: Union[int, float] = 1,
|
77
77
|
outline: Union[str, tuple] = "black", outline2: Union[str, tuple] = "black",
|
78
78
|
outline_opacity: Union[int, float] = 1, outline2_opacity: Union[int, float] = 1,
|
@@ -105,7 +105,10 @@ class FluButtonCanvas(DCanvas):
|
|
105
105
|
outline=outline, outline2=outline2, outline_opacity=outline_opacity, outline2_opacity=outline2_opacity,
|
106
106
|
width=width,
|
107
107
|
) # 创建个svg圆角矩形图片
|
108
|
-
|
108
|
+
from .designs.renderer import get_renderer
|
109
|
+
|
110
|
+
self._tkimg = self.svgdraw.create_svg_image(path=self._img, path2=temppath2, way=get_renderer()) # 用tksvg读取svg图片
|
111
|
+
#print(self._img)
|
109
112
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg, *args, **kwargs) # 在画布上创建个以svg图片为图片的元件
|
110
113
|
|
111
114
|
create_roundrect = create_round_rectangle # 缩写
|
@@ -246,8 +249,14 @@ class FluButton(FluButtonCanvas, DDrawWidget, FluToolTipBase, FluGradient):
|
|
246
249
|
if hasattr(self, "element_border"):
|
247
250
|
self.delete(self.element_border)
|
248
251
|
|
252
|
+
from .designs.renderer import get_renderer
|
253
|
+
|
254
|
+
if get_renderer() == 1:
|
255
|
+
width -= 1
|
256
|
+
height -= 1
|
257
|
+
|
249
258
|
self.element_border = self.create_round_rectangle(
|
250
|
-
0, 0, width, height, _radius, temppath=self.temppath,
|
259
|
+
0, 0, width, height, _radius, temppath=self.temppath, temppath2=self.temppath3,
|
251
260
|
fill=_back_color, fill_opacity=_back_opacity,
|
252
261
|
outline=_border_color, outline_opacity=_border_color_opacity, outline2=_border_color2,
|
253
262
|
outline2_opacity=_border_color2_opacity,
|
tkflu/demos/demo.py
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
def run():
|
2
|
+
from tkflu import *
|
3
|
+
from tkinter import *
|
4
|
+
from tkinter.font import *
|
5
|
+
|
6
|
+
blue_primary_color()
|
7
|
+
set_animation_steps(0)
|
8
|
+
set_animation_step_time(0)
|
9
|
+
|
10
|
+
def togglestate():
|
11
|
+
if button1.dcget("state") == NORMAL:
|
12
|
+
button1.dconfigure(state=DISABLED)
|
13
|
+
button2.dconfigure(state=DISABLED)
|
14
|
+
entry1.dconfigure(state=DISABLED)
|
15
|
+
text1.dconfigure(state=DISABLED)
|
16
|
+
togglebutton1.dconfigure(state=DISABLED)
|
17
|
+
slider1.dconfigure(state=DISABLED)
|
18
|
+
else:
|
19
|
+
button1.dconfigure(state=NORMAL)
|
20
|
+
button2.dconfigure(state=NORMAL)
|
21
|
+
entry1.dconfigure(state=NORMAL)
|
22
|
+
text1.dconfigure(state=NORMAL)
|
23
|
+
togglebutton1.dconfigure(state=NORMAL)
|
24
|
+
slider1.dconfigure(state=NORMAL)
|
25
|
+
button1._draw()
|
26
|
+
button2._draw()
|
27
|
+
entry1._draw()
|
28
|
+
text1._draw()
|
29
|
+
togglebutton1._draw()
|
30
|
+
slider1._draw()
|
31
|
+
|
32
|
+
root = FluWindow()
|
33
|
+
#root.wincustom(way=0)
|
34
|
+
root.geometry("360x650")
|
35
|
+
|
36
|
+
popupmenu = FluPopupMenu()
|
37
|
+
|
38
|
+
thememanager = FluThemeManager()
|
39
|
+
|
40
|
+
menubar = FluMenuBar(root)
|
41
|
+
menubar.add_command(
|
42
|
+
label="FluMenu1", command=lambda: print("FluMenu1 -> Clicked")
|
43
|
+
)
|
44
|
+
|
45
|
+
menu1 = FluMenu()
|
46
|
+
menu1.add_command(
|
47
|
+
label="FluMenu2-1", command=lambda: print("FluMenu2-1 -> Clicked")
|
48
|
+
)
|
49
|
+
menubar.add_cascade(
|
50
|
+
label="FluMenu2", menu=menu1
|
51
|
+
)
|
52
|
+
|
53
|
+
menu2 = FluMenu(height=93)
|
54
|
+
menu2.add_command(
|
55
|
+
label="FluMenu3-1", command=lambda: print("FluMenu3-1 -> Clicked")
|
56
|
+
)
|
57
|
+
|
58
|
+
menu3 = FluMenu(height=93)
|
59
|
+
menu3.add_command(
|
60
|
+
label="FluMenu3-2-1", command=lambda: print("FluMenu3-2-1 -> Clicked")
|
61
|
+
)
|
62
|
+
menu3.add_command(
|
63
|
+
label="FluMenu3-2-2", command=lambda: print("FluMenu3-2-2 -> Clicked")
|
64
|
+
)
|
65
|
+
|
66
|
+
menu2.add_cascade(
|
67
|
+
label="FluMenu3-2", menu=menu3
|
68
|
+
)
|
69
|
+
menubar.add_cascade(
|
70
|
+
label="FluMenu3", menu=menu2
|
71
|
+
)
|
72
|
+
|
73
|
+
menubar.pack(fill="x")
|
74
|
+
|
75
|
+
frame = FluFrame(root)
|
76
|
+
|
77
|
+
scrollbar1 = FluScrollBar(frame)
|
78
|
+
scrollbar1.pack(fill="y", side="right", padx=5, pady=5)
|
79
|
+
|
80
|
+
badge1 = FluBadge(frame, text="FluBadge", width=60)
|
81
|
+
badge1.pack(padx=5, pady=5)
|
82
|
+
|
83
|
+
badge2 = FluBadge(frame, text="FluBadge (Accent)", width=120, style="accent")
|
84
|
+
badge2.pack(padx=5, pady=5)
|
85
|
+
|
86
|
+
label1 = FluLabel(frame, text="FluLabel(Hover Me)")
|
87
|
+
label1.tooltip(text="FluToolTip")
|
88
|
+
label1.pack(padx=5, pady=5)
|
89
|
+
|
90
|
+
label2 = FluLabel(frame, text="FluLabel2(Hover Me)")
|
91
|
+
label2.tooltip(text="FluToolTip2", way=1)
|
92
|
+
label2.pack(padx=5, pady=5)
|
93
|
+
|
94
|
+
button1 = FluButton(
|
95
|
+
frame, text="FluButton", command=lambda: print("FluButton -> Clicked")
|
96
|
+
)
|
97
|
+
button1.pack(fill="x", padx=5, pady=5)
|
98
|
+
|
99
|
+
button2 = FluButton(
|
100
|
+
frame, text="FluButton (Accent)", command=lambda: print("FluButton (Accent) -> Clicked"), style="accent"
|
101
|
+
)
|
102
|
+
button2.pack(fill="x", padx=5, pady=5)
|
103
|
+
|
104
|
+
togglebutton1 = FluToggleButton(
|
105
|
+
frame, text="FluToggleButton", command=lambda: print(f"FluToggleButton -> Toggled -> Checked: {togglebutton1.dcget('checked')}")
|
106
|
+
)
|
107
|
+
togglebutton1.pack(fill="x", padx=5, pady=5)
|
108
|
+
|
109
|
+
togglebutton2 = FluToggleButton(
|
110
|
+
frame, text="Toggle Theme", command=lambda: toggle_theme(togglebutton2, thememanager)
|
111
|
+
)
|
112
|
+
togglebutton2.pack(fill="x", padx=5, pady=5)
|
113
|
+
|
114
|
+
togglebutton3 = FluToggleButton(
|
115
|
+
frame, text="Toggle State", command=lambda: togglestate()
|
116
|
+
)
|
117
|
+
togglebutton3.pack(fill="x", padx=5, pady=5)
|
118
|
+
|
119
|
+
entry1 = FluEntry(frame)
|
120
|
+
entry1.pack(fill="x", padx=5, pady=5)
|
121
|
+
|
122
|
+
text1 = FluText(frame)
|
123
|
+
text1.pack(fill="x", padx=5, pady=5)
|
124
|
+
|
125
|
+
slider1 = FluSlider(frame, value=5, min=0, max=10, tick=True, changed=lambda: print(f"FluSlider -> Changed -> Value: {slider1.dcget('value')}"))
|
126
|
+
slider1.pack(fill="x", padx=5, pady=5)
|
127
|
+
|
128
|
+
"""listbox1 = FluListBox(frame)
|
129
|
+
listbox1.dconfigure()
|
130
|
+
listbox1.pack(fill="x", padx=5, pady=5)"""
|
131
|
+
|
132
|
+
frame.pack(fill="both", expand="yes", side="right", padx=15, pady=15)
|
133
|
+
#frame.update_idletasks()
|
134
|
+
|
135
|
+
#thememanager.mode("light")
|
136
|
+
|
137
|
+
root.mainloop()
|
tkflu/demos/designer.py
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
from tkflu import *
|
2
2
|
|
3
|
+
set_renderer(1)
|
3
4
|
set_animation_steps(10)
|
4
5
|
set_animation_step_time(10)
|
5
6
|
|
6
7
|
root = FluWindow()
|
7
8
|
root.title("tkfluent designer")
|
8
|
-
root.geometry("
|
9
|
+
root.geometry("600x300")
|
9
10
|
|
10
11
|
theme_manager = FluThemeManager(root)
|
11
12
|
|
@@ -23,11 +24,25 @@ def func1():
|
|
23
24
|
label = FluLabel(messagebox, text="This is a example for tkfluent!", width=160, height=32)
|
24
25
|
label.pack(anchor="center")
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
menubar.add_command(label="
|
27
|
+
style = "menu"
|
28
|
+
|
29
|
+
menubar.add_command(label="File", style=style, width=40, command=lambda: print("File -> Clicked"))
|
30
|
+
menubar.add_cascade(label="Theme Mode", style=style, width=85, menu=menu1)
|
31
|
+
menubar.add_command(label="About", style=style, width=45, command=lambda: func1())
|
29
32
|
|
30
33
|
menubar.show()
|
31
34
|
|
35
|
+
widgets = FluFrame(root, width=100)
|
36
|
+
|
37
|
+
widgets.title = FluLabel(widgets, text="Widgets", width=100)
|
38
|
+
widgets.title.pack(fill="x", side="top")
|
39
|
+
|
40
|
+
widgets.pack(fill="y", side="left", padx=10, pady=10)
|
41
|
+
|
42
|
+
windows = FluFrame(root, width=300)
|
43
|
+
windows.pack(fill="y", side="left", expand="yes", anchor="center", padx=10, pady=10)
|
44
|
+
|
45
|
+
configs = FluFrame(root, width=200)
|
46
|
+
configs.pack(fill="y", side="right", padx=10, pady=10)
|
32
47
|
|
33
48
|
root.mainloop()
|
tkflu/designs/__init__.py
CHANGED
@@ -2,4 +2,5 @@ from .design import FluDesign
|
|
2
2
|
from .primary_color import FluPrimaryColor, set_primary_color, get_primary_color
|
3
3
|
from .animation import FluAnimation, set_animation_steps, set_animation_step_time, get_animation_steps, get_animation_step_time
|
4
4
|
from .gradient import FluGradient
|
5
|
-
from .fonts import *
|
5
|
+
from .fonts import *
|
6
|
+
from .renderer import FluRenderer, set_renderer, get_renderer
|
tkflu/designs/button.py
CHANGED
@@ -120,8 +120,8 @@ def button(mode: str, style: str, state: str):
|
|
120
120
|
}
|
121
121
|
elif state == "hover":
|
122
122
|
return {
|
123
|
-
"back_color": "#
|
124
|
-
"back_opacity":
|
123
|
+
"back_color": "#eaeaea",
|
124
|
+
"back_opacity": "1",
|
125
125
|
"border_color": "#000000",
|
126
126
|
"border_color_opacity": "0",
|
127
127
|
"border_color2": None,
|
@@ -132,8 +132,8 @@ def button(mode: str, style: str, state: str):
|
|
132
132
|
}
|
133
133
|
elif state == "pressed":
|
134
134
|
return {
|
135
|
-
"back_color": "#
|
136
|
-
"back_opacity": "
|
135
|
+
"back_color": "#ededed",
|
136
|
+
"back_opacity": "1",
|
137
137
|
"border_color": "#000000",
|
138
138
|
"border_color_opacity": "0",
|
139
139
|
"border_color2": None,
|
@@ -0,0 +1,19 @@
|
|
1
|
+
from os import environ
|
2
|
+
|
3
|
+
|
4
|
+
def set_renderer(way: int):
|
5
|
+
environ["tkfluent.renderer"] = str(way)
|
6
|
+
|
7
|
+
def get_renderer():
|
8
|
+
return int(environ["tkfluent.renderer"])
|
9
|
+
|
10
|
+
if "tkfluent.renderer" not in environ:
|
11
|
+
set_renderer(0)
|
12
|
+
|
13
|
+
|
14
|
+
class FluRenderer(object):
|
15
|
+
def renderer(self, way: int = None):
|
16
|
+
if way:
|
17
|
+
environ["tkfluent.renderer"] = str(way)
|
18
|
+
else:
|
19
|
+
return int(environ["tkfluent.renderer"])
|
tkflu/designs/window.py
CHANGED
@@ -7,7 +7,8 @@ def window(mode):
|
|
7
7
|
"back_color": "#cf392d",
|
8
8
|
"text_color": "#000000",
|
9
9
|
"text_hover_color": "#ffffff"
|
10
|
-
}
|
10
|
+
},
|
11
|
+
"transparent_color": "grey"
|
11
12
|
}
|
12
13
|
else:
|
13
14
|
return {
|
@@ -17,5 +18,6 @@ def window(mode):
|
|
17
18
|
"back_color": "#c42b1c",
|
18
19
|
"text_color": "#ffffff",
|
19
20
|
"text_hover_color": "#000000"
|
20
|
-
}
|
21
|
+
},
|
22
|
+
"transparent_color": "grey"
|
21
23
|
}
|
tkflu/entry.py
CHANGED
@@ -54,7 +54,7 @@ class FluEntryCanvas(DCanvas):
|
|
54
54
|
draw = FluEntryDraw
|
55
55
|
|
56
56
|
def create_round_rectangle(self,
|
57
|
-
x1, y1, x2, y2, r1, r2=None, temppath=None,
|
57
|
+
x1, y1, x2, y2, r1, r2=None, temppath=None, temppath2=None,
|
58
58
|
fill="transparent", fill_opacity=1, stop1="0.93", stop2="0.94",
|
59
59
|
outline="black", outline2="black", outline_opacity=1, outline2_opacity=1,
|
60
60
|
width=1
|
@@ -65,7 +65,8 @@ class FluEntryCanvas(DCanvas):
|
|
65
65
|
outline=outline, outline2=outline2, outline_opacity=outline_opacity, outline2_opacity=outline2_opacity,
|
66
66
|
width=width
|
67
67
|
)
|
68
|
-
|
68
|
+
from .designs.renderer import get_renderer
|
69
|
+
self._tkimg = self.svgdraw.create_svg_image(self._img, temppath2, way=get_renderer())
|
69
70
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
70
71
|
|
71
72
|
create_roundrect = create_round_rectangle
|
@@ -168,9 +169,12 @@ class FluEntry(FluEntryCanvas, DDrawWidget, FluToolTipBase):
|
|
168
169
|
|
169
170
|
self.entry.configure(background=_back_color, insertbackground=_text_color, foreground=_text_color,
|
170
171
|
disabledbackground=_back_color, disabledforeground=_text_color)
|
171
|
-
|
172
|
+
from .designs.renderer import get_renderer
|
173
|
+
if get_renderer() == 1:
|
174
|
+
width -= 1
|
175
|
+
height -= 1
|
172
176
|
self.element_border = self.create_round_rectangle(
|
173
|
-
0, 0, width, height, _radius, temppath=self.temppath,
|
177
|
+
0, 0, width, height, _radius, temppath=self.temppath, temppath2=self.temppath3,
|
174
178
|
fill=_back_color, fill_opacity=_back_opacity, stop1=_stop1, stop2=_stop2,
|
175
179
|
outline=_border_color, outline_opacity=_border_color_opacity, outline2=_border_color2,
|
176
180
|
outline2_opacity=_border_color2_opacity,
|
tkflu/frame.py
CHANGED
@@ -110,7 +110,8 @@ class FluFrameCanvas(DCanvas):
|
|
110
110
|
fill=fill, #fill_opacity=fill_opacity,
|
111
111
|
outline=outline, outline_opacity=outline_opacity, width=width
|
112
112
|
)
|
113
|
-
|
113
|
+
from .designs.renderer import get_renderer
|
114
|
+
self._tkimg = self.svgdraw.create_svg_image(self._img)
|
114
115
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
115
116
|
|
116
117
|
create_roundrect = create_round_rectangle
|
@@ -194,7 +195,7 @@ class FluFrame(Frame, DObject, FluGradient):
|
|
194
195
|
back_colors = self.generate_hex2hex(self.attributes.back_color, n["back_color"], steps=animation_steps)
|
195
196
|
for i in range(animation_steps):
|
196
197
|
def update(ii=i): # 使用默认参数立即捕获i的值
|
197
|
-
print(back_colors[ii])
|
198
|
+
#print(back_colors[ii])
|
198
199
|
self._draw(tempcolor=back_colors[ii])
|
199
200
|
self.update()
|
200
201
|
|
tkflu/listbox.py
CHANGED
@@ -40,7 +40,7 @@ class FluListBoxCanvas(DCanvas):
|
|
40
40
|
x1, y1, x2, y2, r1, r2, temppath=temppath,
|
41
41
|
fill=fill, outline=outline, outline2=outline2, width=width
|
42
42
|
)
|
43
|
-
self._tkimg = self.svgdraw.
|
43
|
+
self._tkimg = self.svgdraw.create_svg_image(self._img)
|
44
44
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
45
45
|
|
46
46
|
create_roundrect = create_round_rectangle
|
tkflu/menu.py
CHANGED
@@ -4,7 +4,7 @@ from .tooltip import FluToolTipBase
|
|
4
4
|
|
5
5
|
|
6
6
|
class FluMenu(FluPopupMenu, FluToolTipBase):
|
7
|
-
def __init__(self, *args, **kwargs):
|
7
|
+
def __init__(self, height=None, *args, **kwargs):
|
8
8
|
super().__init__(*args, **kwargs)
|
9
9
|
|
10
10
|
def _init(self, mode, style):
|
@@ -25,16 +25,14 @@ class FluMenu(FluPopupMenu, FluToolTipBase):
|
|
25
25
|
|
26
26
|
self.theme(mode=mode, style=style)
|
27
27
|
|
28
|
-
def add_command(self, custom_widget=None, width=
|
28
|
+
def add_command(self, custom_widget=None, width=None, label: str = "", **kwargs):
|
29
|
+
if width is None:
|
30
|
+
width = len(label)*8
|
29
31
|
if custom_widget:
|
30
32
|
widget = custom_widget(self)
|
31
33
|
else:
|
32
34
|
from .button import FluButton
|
33
35
|
widget = FluButton(self, width=width)
|
34
|
-
if "label" in kwargs:
|
35
|
-
label = kwargs.pop("label")
|
36
|
-
else:
|
37
|
-
label = ""
|
38
36
|
if "style" in kwargs:
|
39
37
|
style = kwargs.pop("style")
|
40
38
|
else:
|
@@ -66,16 +64,14 @@ class FluMenu(FluPopupMenu, FluToolTipBase):
|
|
66
64
|
widget.pack(side="top", fill="x", padx=1, pady=(1, 0))
|
67
65
|
self.dcget("actions")[id] = widget
|
68
66
|
|
69
|
-
def add_cascade(self, custom_widget=None, width=
|
67
|
+
def add_cascade(self, custom_widget=None, width=None, menu=None, label: str = "", **kwargs):
|
68
|
+
if width is None:
|
69
|
+
width = len(label)*8
|
70
70
|
if custom_widget:
|
71
71
|
widget = custom_widget(self)
|
72
72
|
else:
|
73
73
|
from .button import FluButton
|
74
74
|
widget = FluButton(self, width=width)
|
75
|
-
if "label" in kwargs:
|
76
|
-
label = kwargs.pop("label")
|
77
|
-
else:
|
78
|
-
label = ""
|
79
75
|
if "style" in kwargs:
|
80
76
|
style = kwargs.pop("style")
|
81
77
|
else:
|
@@ -86,9 +82,13 @@ class FluMenu(FluPopupMenu, FluToolTipBase):
|
|
86
82
|
id = widget._w
|
87
83
|
|
88
84
|
def command(event=None):
|
85
|
+
self.l1 = True
|
89
86
|
#print(menu._w)
|
90
87
|
|
91
|
-
menu.popup(widget.winfo_rootx()+widget.winfo_width()
|
88
|
+
menu.popup(widget.winfo_rootx()+widget.winfo_width(), widget.winfo_rooty()-5)
|
89
|
+
height = len(self.dcget("actions")) * 45
|
90
|
+
#print(height)
|
91
|
+
menu.window.geometry(f"100x{height}")
|
92
92
|
menu.window.deiconify()
|
93
93
|
menu.window.attributes("-topmost")
|
94
94
|
|
@@ -102,4 +102,4 @@ class FluMenu(FluPopupMenu, FluToolTipBase):
|
|
102
102
|
widget.theme(style=style)
|
103
103
|
|
104
104
|
widget.pack(side="top", fill="x", padx=1, pady=(1, 0))
|
105
|
-
self.dcget("actions")[id] = widget
|
105
|
+
self.dcget("actions")[id] = widget
|
tkflu/menubar.py
CHANGED
@@ -31,16 +31,14 @@ class FluMenuBar(Frame, DObject, FluGradient):
|
|
31
31
|
def show(self):
|
32
32
|
self.pack(fill="x")
|
33
33
|
|
34
|
-
def add_command(self, custom_widget=None, width=
|
34
|
+
def add_command(self, custom_widget=None, width=None, label: str = "", **kwargs):
|
35
|
+
if width is None:
|
36
|
+
width = len(label)*8
|
35
37
|
if custom_widget:
|
36
38
|
widget = custom_widget(self)
|
37
39
|
else:
|
38
40
|
from .button import FluButton
|
39
41
|
widget = FluButton(self, width=width)
|
40
|
-
if "label" in kwargs:
|
41
|
-
label = kwargs.pop("label")
|
42
|
-
else:
|
43
|
-
label = ""
|
44
42
|
if "style" in kwargs:
|
45
43
|
style = kwargs.pop("style")
|
46
44
|
else:
|
@@ -69,16 +67,14 @@ class FluMenuBar(Frame, DObject, FluGradient):
|
|
69
67
|
|
70
68
|
from .menu import FluMenu
|
71
69
|
|
72
|
-
def add_cascade(self, custom_widget=None, width=
|
70
|
+
def add_cascade(self, custom_widget=None, width=None, label: str = "", menu: FluMenu = None, **kwargs):
|
71
|
+
if width is None:
|
72
|
+
width = len(label)*8
|
73
73
|
if custom_widget:
|
74
74
|
widget = custom_widget(self)
|
75
75
|
else:
|
76
76
|
from .button import FluButton
|
77
77
|
widget = FluButton(self, width=width)
|
78
|
-
if "label" in kwargs:
|
79
|
-
label = kwargs.pop("label")
|
80
|
-
else:
|
81
|
-
label = ""
|
82
78
|
if "style" in kwargs:
|
83
79
|
style = kwargs.pop("style")
|
84
80
|
else:
|
@@ -90,7 +86,9 @@ class FluMenuBar(Frame, DObject, FluGradient):
|
|
90
86
|
|
91
87
|
def command():
|
92
88
|
menu.focus_set()
|
93
|
-
menu.popup(widget.winfo_rootx(), widget.winfo_rooty() + widget.winfo_height())
|
89
|
+
menu.popup(widget.winfo_rootx()-5, widget.winfo_rooty() + widget.winfo_height())
|
90
|
+
height = len(menu.dcget("actions")) * 45
|
91
|
+
menu.window.geometry(f"100x{height}")
|
94
92
|
menu.window.deiconify()
|
95
93
|
menu.window.attributes("-topmost")
|
96
94
|
|
tkflu/popupmenu.py
CHANGED
@@ -8,7 +8,7 @@ class FluPopupMenuWindow(FluPopupWindow):
|
|
8
8
|
|
9
9
|
|
10
10
|
class FluPopupMenu(FluFrame):
|
11
|
-
def __init__(self, *args, width=100, height=46, transparent_color=
|
11
|
+
def __init__(self, *args, width=100, height=46, transparent_color=None, style="popupmenu", **kwargs):
|
12
12
|
self.window = FluPopupMenuWindow(transparent_color=transparent_color, width=width, height=height)
|
13
13
|
|
14
14
|
super().__init__(self.window, *args, style=style, **kwargs)
|
tkflu/popupwindow.py
CHANGED
@@ -1,23 +1,40 @@
|
|
1
1
|
from tkinter import Toplevel
|
2
2
|
|
3
|
+
from vbuild import hasSass
|
4
|
+
|
3
5
|
|
4
6
|
class FluPopupWindow(Toplevel):
|
5
|
-
def __init__(self, *args, transparent_color=
|
7
|
+
def __init__(self, *args, transparent_color=None, mode="light", width=100, height=46, custom=True, **kwargs):
|
6
8
|
super().__init__(*args, background=transparent_color, **kwargs)
|
7
9
|
|
8
10
|
self.theme(mode=mode)
|
9
11
|
|
12
|
+
self._transparent_color = transparent_color
|
13
|
+
|
10
14
|
if width > 0 and height > 0:
|
11
15
|
self.geometry(f"{width}x{height}")
|
12
16
|
|
13
17
|
if custom:
|
14
|
-
self.transient_color = transparent_color
|
15
18
|
self.overrideredirect(True)
|
16
|
-
|
19
|
+
|
20
|
+
self._draw()
|
17
21
|
|
18
22
|
self.withdraw()
|
19
23
|
|
20
24
|
self.bind("<FocusOut>", self._event_focusout, add="+")
|
25
|
+
self.bind("<Configure>", self._draw)
|
26
|
+
|
27
|
+
def _draw(self, event=None):
|
28
|
+
if hasattr(self, "tk"):
|
29
|
+
if self.overrideredirect():
|
30
|
+
if self._transparent_color is None:
|
31
|
+
from .designs.window import window
|
32
|
+
self.transparent_color = window(self.mode)["transparent_color"]
|
33
|
+
else:
|
34
|
+
self.transparent_color = self._transparent_color
|
35
|
+
#print(self.transparent_color)
|
36
|
+
self.wm_attributes("-transparentcolor", self.transparent_color)
|
37
|
+
self.configure(background=self.transparent_color)
|
21
38
|
|
22
39
|
def _event_focusout(self, event=None):
|
23
40
|
"""self.wm_attributes("-alpha", 1)
|
@@ -45,9 +62,11 @@ class FluPopupWindow(Toplevel):
|
|
45
62
|
FRAMES_COUNT = get_animation_steps()
|
46
63
|
FRAME_DELAY = get_animation_step_time()
|
47
64
|
|
65
|
+
#print(FRAMES_COUNT,FRAME_DELAY)
|
66
|
+
|
48
67
|
self.geometry(f"+{x}+{y}")
|
49
68
|
#self.focus_set()
|
50
|
-
if
|
69
|
+
if FRAMES_COUNT != 0 or FRAME_DELAY != 0:
|
51
70
|
self.wm_attributes("-alpha", 0.0)
|
52
71
|
self.deiconify()
|
53
72
|
|
@@ -65,6 +84,7 @@ class FluPopupWindow(Toplevel):
|
|
65
84
|
def theme(self, mode=None):
|
66
85
|
if mode:
|
67
86
|
self.mode = mode
|
87
|
+
self._draw()
|
68
88
|
for widget in self.winfo_children():
|
69
89
|
if hasattr(widget, "theme"):
|
70
90
|
widget.theme(mode=self.mode.lower())
|
tkflu/scrollbar.py
CHANGED
@@ -57,7 +57,7 @@ class FluScrollBarCanvas(DCanvas):
|
|
57
57
|
x1, y1, x2, y2, r1, r2, temppath=temppath,
|
58
58
|
fill=fill
|
59
59
|
)
|
60
|
-
self._tkimg = self.svgdraw.
|
60
|
+
self._tkimg = self.svgdraw.create_svg_image(self._img)
|
61
61
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
62
62
|
|
63
63
|
def create_thumb(
|
@@ -69,7 +69,7 @@ class FluScrollBarCanvas(DCanvas):
|
|
69
69
|
x1, y1, x2, y2, r1, r2, temppath=temppath,
|
70
70
|
fill=fill
|
71
71
|
)
|
72
|
-
self._tkimg2 = self.svgdraw.
|
72
|
+
self._tkimg2 = self.svgdraw.create_svg_image(self._img2)
|
73
73
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg2)
|
74
74
|
|
75
75
|
|
tkflu/slider.py
CHANGED
@@ -82,7 +82,7 @@ class FluSliderCanvas(DCanvas):
|
|
82
82
|
|
83
83
|
def create_track(
|
84
84
|
self,
|
85
|
-
x1, y1, width, height, width2, temppath=None, radius=3,
|
85
|
+
x1, y1, width, height, width2, temppath=None, temppath2=None, radius=3,
|
86
86
|
track_fill="transparent", track_opacity=1,
|
87
87
|
rail_fill="transparent", rail_opacity=1
|
88
88
|
):
|
@@ -91,13 +91,14 @@ class FluSliderCanvas(DCanvas):
|
|
91
91
|
track_fill=track_fill, track_opacity=track_opacity,
|
92
92
|
rail_fill=rail_fill, rail_opacity=rail_opacity
|
93
93
|
)
|
94
|
-
|
94
|
+
from .designs.renderer import get_renderer
|
95
|
+
self._tkimg2 = self.svgdraw.create_svg_image(self._img2, temppath2, way=get_renderer())
|
95
96
|
#print(self._img2)
|
96
97
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg2)
|
97
98
|
|
98
99
|
def create_thumb(
|
99
100
|
self,
|
100
|
-
x1, y1, width, height, r1, r2, temppath=None,
|
101
|
+
x1, y1, width, height, r1, r2, temppath=None, temppath2=None,
|
101
102
|
fill="transparent", fill_opacity=1,
|
102
103
|
outline="transparent", outline_opacity=1,
|
103
104
|
outline2="transparent", outline2_opacity=1,
|
@@ -110,7 +111,8 @@ class FluSliderCanvas(DCanvas):
|
|
110
111
|
outline2=outline2, outline2_opacity=outline2_opacity,
|
111
112
|
inner_fill=inner_fill, inner_fill_opacity=inner_fill_opacity,
|
112
113
|
)
|
113
|
-
|
114
|
+
from .designs.renderer import get_renderer
|
115
|
+
self._tkimg = self.svgdraw.create_svg_image(self._img, temppath2, way=get_renderer())
|
114
116
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
115
117
|
|
116
118
|
|
@@ -286,28 +288,53 @@ class FluSlider(FluSliderCanvas, DDrawWidget):
|
|
286
288
|
|
287
289
|
# 确保不会超出右边界
|
288
290
|
thumb_left = min(thumb_left, self.winfo_width() - thumb_width)
|
291
|
+
from .designs.renderer import get_renderer
|
292
|
+
if get_renderer() == 0:
|
293
|
+
# 创建轨道时,width2 参数应为选中部分的宽度(滑块中心位置)
|
294
|
+
self.element_track = self.create_track(
|
295
|
+
_thumb_width / 4,
|
296
|
+
height / 2 - _track_height,
|
297
|
+
self.winfo_width() - _thumb_width / 2,
|
298
|
+
_track_height,
|
299
|
+
thumb_center - _thumb_width / 4, # 关键修正:使用滑块中心相对于轨道起点的距离
|
300
|
+
temppath=self.temppath, temppath2=self.temppath3, radius=_radius,
|
301
|
+
track_fill=_track_back_color, track_opacity=_track_back_opacity,
|
302
|
+
rail_fill=_rail_back_color, rail_opacity=_rail_back_opacity
|
303
|
+
)
|
304
|
+
|
305
|
+
self.element_thumb = self.create_thumb(
|
306
|
+
thumb_left, 0, # 直接使用计算出的左上角位置
|
307
|
+
thumb_width, thumb_width,
|
308
|
+
_thumb_radius, _thumb_inner_radius,
|
309
|
+
temppath=self.temppath2, temppath2=self.temppath4, fill=_thumb_back_color, fill_opacity=_thumb_back_opacity,
|
310
|
+
outline=_thumb_border_color, outline_opacity=_thumb_border_color_opacity,
|
311
|
+
outline2=_thumb_border_color2, outline2_opacity=_thumb_border_color2_opacity,
|
312
|
+
inner_fill=_thumb_inner_back_color, inner_fill_opacity=_thumb_inner_back_opacity,
|
313
|
+
)
|
314
|
+
elif get_renderer() == 1:
|
315
|
+
# 创建轨道时,width2 参数应为选中部分的宽度(滑块中心位置)
|
316
|
+
self.element_track = self.create_track(
|
317
|
+
_thumb_width / 4,
|
318
|
+
height / 2 - _track_height,
|
319
|
+
self.winfo_width() - _thumb_width / 2 - 1,
|
320
|
+
_track_height - 1,
|
321
|
+
thumb_center - _thumb_width / 4, # 关键修正:使用滑块中心相对于轨道起点的距离
|
322
|
+
temppath=self.temppath, temppath2=self.temppath3, radius=_radius,
|
323
|
+
track_fill=_track_back_color, track_opacity=_track_back_opacity,
|
324
|
+
rail_fill=_rail_back_color, rail_opacity=_rail_back_opacity
|
325
|
+
)
|
326
|
+
|
327
|
+
self.element_thumb = self.create_thumb(
|
328
|
+
thumb_left, 0, # 直接使用计算出的左上角位置
|
329
|
+
thumb_width - 3.5, thumb_width - 3.5,
|
330
|
+
_thumb_radius, _thumb_inner_radius,
|
331
|
+
temppath=self.temppath2, temppath2=self.temppath4, fill=_thumb_back_color,
|
332
|
+
fill_opacity=_thumb_back_opacity,
|
333
|
+
outline=_thumb_border_color, outline_opacity=_thumb_border_color_opacity,
|
334
|
+
outline2=_thumb_border_color2, outline2_opacity=_thumb_border_color2_opacity,
|
335
|
+
inner_fill=_thumb_inner_back_color, inner_fill_opacity=_thumb_inner_back_opacity,
|
336
|
+
)
|
289
337
|
|
290
|
-
# 创建轨道时,width2 参数应为选中部分的宽度(滑块中心位置)
|
291
|
-
self.element_track = self.create_track(
|
292
|
-
_thumb_width / 4,
|
293
|
-
height / 2 - _track_height,
|
294
|
-
self.winfo_width() - _thumb_width / 2,
|
295
|
-
_track_height,
|
296
|
-
thumb_center - _thumb_width / 4, # 关键修正:使用滑块中心相对于轨道起点的距离
|
297
|
-
temppath=self.temppath, radius=_radius,
|
298
|
-
track_fill=_track_back_color, track_opacity=_track_back_opacity,
|
299
|
-
rail_fill=_rail_back_color, rail_opacity=_rail_back_opacity
|
300
|
-
)
|
301
|
-
|
302
|
-
self.element_thumb = self.create_thumb(
|
303
|
-
thumb_left, 0, # 直接使用计算出的左上角位置
|
304
|
-
thumb_width, thumb_width,
|
305
|
-
_thumb_radius, _thumb_inner_radius,
|
306
|
-
temppath=self.temppath2, fill=_thumb_back_color, fill_opacity=_thumb_back_opacity,
|
307
|
-
outline=_thumb_border_color, outline_opacity=_thumb_border_color_opacity,
|
308
|
-
outline2=_thumb_border_color2, outline2_opacity=_thumb_border_color2_opacity,
|
309
|
-
inner_fill=_thumb_inner_back_color, inner_fill_opacity=_thumb_inner_back_opacity,
|
310
|
-
)
|
311
338
|
|
312
339
|
self._e1 = self.tag_bind(self.element_thumb, "<Enter>", self._event_enter_thumb, add="+")
|
313
340
|
self._e2 = self.tag_bind(self.element_thumb, "<Leave>", self._event_leave_thumb, add="+")
|
tkflu/text.py
CHANGED
@@ -55,7 +55,7 @@ class FluTextCanvas(DCanvas):
|
|
55
55
|
draw = FluTextDraw
|
56
56
|
|
57
57
|
def create_round_rectangle(self,
|
58
|
-
x1, y1, x2, y2, r1, r2=None, temppath=None,
|
58
|
+
x1, y1, x2, y2, r1, r2=None, temppath=None, temppath2=None,
|
59
59
|
fill="transparent", fill_opacity=1, stop1="0.93", stop2="0.94",
|
60
60
|
outline="black", outline2="black", outline_opacity=1, outline2_opacity=1,
|
61
61
|
width=1
|
@@ -66,7 +66,8 @@ class FluTextCanvas(DCanvas):
|
|
66
66
|
outline=outline, outline2=outline2, outline_opacity=outline_opacity, outline2_opacity=outline2_opacity,
|
67
67
|
width=width
|
68
68
|
)
|
69
|
-
|
69
|
+
from .designs.renderer import get_renderer
|
70
|
+
self._tkimg = self.svgdraw.create_svg_image(self._img, temppath2, way=get_renderer())
|
70
71
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
71
72
|
|
72
73
|
create_roundrect = create_round_rectangle
|
@@ -174,8 +175,14 @@ class FluText(FluTextCanvas, DDrawWidget, FluToolTipBase):
|
|
174
175
|
|
175
176
|
if hasattr(self, "element_border"):
|
176
177
|
self.delete(self.element_border)
|
178
|
+
|
179
|
+
from .designs.renderer import get_renderer
|
180
|
+
if get_renderer() == 1:
|
181
|
+
width -= 1
|
182
|
+
height -= 1
|
183
|
+
|
177
184
|
self.element_border = self.create_round_rectangle(
|
178
|
-
0, 0, width, height, _radius, temppath=self.temppath,
|
185
|
+
0, 0, width, height, _radius, temppath=self.temppath, temppath2=self.temppath3,
|
179
186
|
fill=_back_color, fill_opacity=_back_opacity, stop1=_stop1, stop2=_stop2,
|
180
187
|
outline=_border_color, outline_opacity=_border_color_opacity, outline2=_border_color2,
|
181
188
|
outline2_opacity=_border_color2_opacity,
|
tkflu/togglebutton.py
CHANGED
@@ -43,7 +43,7 @@ class FluToggleButtonCanvas(DCanvas):
|
|
43
43
|
draw = FluToggleButtonDraw
|
44
44
|
|
45
45
|
def create_round_rectangle_with_text(self,
|
46
|
-
x1, y1, x2, y2, r1, r2=None, temppath=None,
|
46
|
+
x1, y1, x2, y2, r1, r2=None, temppath=None, temppath2=None,
|
47
47
|
fill="transparent", fill_opacity=1,
|
48
48
|
outline="black", outline2="black", outline_opacity=1, outline2_opacity=1,
|
49
49
|
width=1,
|
@@ -54,7 +54,8 @@ class FluToggleButtonCanvas(DCanvas):
|
|
54
54
|
outline=outline, outline2=outline2, outline_opacity=outline_opacity, outline2_opacity=outline2_opacity,
|
55
55
|
width=width,
|
56
56
|
)
|
57
|
-
|
57
|
+
from .designs.renderer import get_renderer
|
58
|
+
self._tkimg = self.svgdraw.create_svg_image(self._img, temppath2, way=get_renderer())
|
58
59
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
59
60
|
|
60
61
|
create_roundrect = create_round_rectangle_with_text
|
@@ -174,8 +175,13 @@ class FluToggleButton(FluToggleButtonCanvas, DDrawWidget, FluToolTipBase, FluGra
|
|
174
175
|
_radius = tempcolor.radius
|
175
176
|
_text_color = tempcolor.text_color
|
176
177
|
|
178
|
+
from .designs.renderer import get_renderer
|
179
|
+
if get_renderer() == 1:
|
180
|
+
width -= 1
|
181
|
+
height -= 1
|
182
|
+
|
177
183
|
self.element_border = self.create_round_rectangle_with_text(
|
178
|
-
0, 0, width, height, _radius, temppath=self.temppath,
|
184
|
+
0, 0, width, height, _radius, temppath=self.temppath, temppath2=self.temppath3,
|
179
185
|
fill=_back_color, fill_opacity=_back_opacity,
|
180
186
|
outline=_border_color, outline_opacity=_border_color_opacity, outline2=_border_color2,
|
181
187
|
outline2_opacity=_border_color2_opacity,
|
tkflu/tooltip.py
CHANGED
@@ -5,7 +5,7 @@ import sys
|
|
5
5
|
|
6
6
|
class FluToolTip(FluPopupWindow):
|
7
7
|
def __init__(self, widget: Widget, text, mode="light", delay=400, show_time=100.0, *args, **kwargs):
|
8
|
-
super().__init__(*args,
|
8
|
+
super().__init__(*args, **kwargs)
|
9
9
|
|
10
10
|
from .label import FluLabel
|
11
11
|
from .frame import FluFrame
|
@@ -69,7 +69,7 @@ class FluToolTip(FluPopupWindow):
|
|
69
69
|
|
70
70
|
class FluToolTip2(FluPopupWindow):
|
71
71
|
def __init__(self, widget, text, mode="light", *args, **kwargs):
|
72
|
-
super().__init__(*args,
|
72
|
+
super().__init__(*args, **kwargs)
|
73
73
|
|
74
74
|
from .label import FluLabel
|
75
75
|
from .frame import FluFrame
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: tkfluent
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.6
|
4
4
|
Summary: Fluent(SunValley) Design for Tkinter. Modern GUI
|
5
5
|
License: GPL-3.0
|
6
6
|
Keywords: tkfluent,tksvg,tkinter,fluent,modern,GUI,interface
|
@@ -30,7 +30,7 @@ Requires-Dist: easydict (>=1.13,<2.0)
|
|
30
30
|
Requires-Dist: numpy
|
31
31
|
Requires-Dist: pillow (>=10.2.0,<11.0.0)
|
32
32
|
Requires-Dist: svgwrite (>=1.4.3,<2.0.0)
|
33
|
-
Requires-Dist: tkdeft (==0.1.
|
33
|
+
Requires-Dist: tkdeft (==0.1.2)
|
34
34
|
Requires-Dist: tkextrafont (>=0.6.3,<0.7.0)
|
35
35
|
Requires-Dist: tksvg (>=0.7.4,<0.8.0)
|
36
36
|
Project-URL: Documentation, https://tkfluent.netlify.app
|
@@ -1,7 +1,7 @@
|
|
1
1
|
tkflu/__init__.py,sha256=VuP9kfPYQLNi0qMFkQD2-9df0ltf59g8cRVL1CWKlR0,1050
|
2
|
-
tkflu/__main__.py,sha256=
|
3
|
-
tkflu/badge.py,sha256=
|
4
|
-
tkflu/button.py,sha256=
|
2
|
+
tkflu/__main__.py,sha256=75t7SIa9VhIJvP4Fthqc12xhCIbChCky7GHtsgaWmpY,3820
|
3
|
+
tkflu/badge.py,sha256=vd5V3We6cRUJ7HQ57CPXkgD6ayMrfF9jRDyP_06vG4k,6143
|
4
|
+
tkflu/button.py,sha256=4hNPK7jxUvYcWAChqQMNLvqt0jgy6XSUwIPZRImnies,19584
|
5
5
|
tkflu/bwm.py,sha256=dAkBkoiZTzxshU2SwJCcFd8L9Ftf6JS7PSqC6c2yVBo,8578
|
6
6
|
tkflu/checkbox.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
7
|
tkflu/constants.py,sha256=VX3NcSzdOqelK3IRM-fK_RKBHV26d8AgJMuP-8hqCsA,488
|
@@ -10,8 +10,9 @@ tkflu/customwindow2.py,sha256=nyNEMoGVnOYXCPbdvxZFUH-VlpAtjjEGI8Ul9VDvgAs,2109
|
|
10
10
|
tkflu/defs.py,sha256=pKVQUm-dK12QiU2MMFD7sxoiXfhEsezN_uAV6eE5Cbk,1144
|
11
11
|
tkflu/demos/__init__.py,sha256=0IV8vUG2kAp90bbRXGj7Mte2ABXrZ_rzIyZxmB1fGLY,102
|
12
12
|
tkflu/demos/acrylic1.py,sha256=-1SniTxrQeAYz6VSxHu7UsAmZeSIBaElgC2KYVVAghU,423
|
13
|
+
tkflu/demos/demo.py,sha256=7qljHUnBCfzj9j2OGwF_UbW1AsZPeNHcR-Xyv-RJCtg,4243
|
13
14
|
tkflu/demos/demo1.py,sha256=xR4a1qOrzxHXhVFlluTjp9izo7sO_YFbS_BGZj1LbZs,112
|
14
|
-
tkflu/demos/designer.py,sha256=
|
15
|
+
tkflu/demos/designer.py,sha256=eoV0mxLKRmXfprnJom6MiDhHUhk2mA7Uyd2nbOVRI-k,1400
|
15
16
|
tkflu/demos/grad.py,sha256=neRGPq7VkGEzzUJymNdBi7EYI55wMes-OX3l-DQSonA,2195
|
16
17
|
tkflu/demos/grad2.py,sha256=2ZixYVCaqWoWxTqYD4p6x9Sz7VUT3KCeQDNzOX0aAkI,442
|
17
18
|
tkflu/demos/grad3.py,sha256=vJQ70C0amAJMbDvudOvHBqwb59SuXoWDCk7QovFuFts,441
|
@@ -19,10 +20,10 @@ tkflu/demos/screenshot.py,sha256=jYvNHHukzUKzzefyL4isQbd8PDbemHQFZpRWyUTF2iQ,66
|
|
19
20
|
tkflu/demos/scroll.py,sha256=x5nh5ytg6IQZKowm0SR1Mrm7Elf586hAKI76LH7qtEQ,528
|
20
21
|
tkflu/demos/test.py,sha256=DMontyt61qq4ULVExSrHA9tbQlXHH_KSkQPv1EV8TEk,153
|
21
22
|
tkflu/demos/tooltip.py,sha256=_tTIUuVo8x9YpdikPLxTvbB3wF1vb-JKppVDgzHXj2k,286
|
22
|
-
tkflu/designs/__init__.py,sha256=
|
23
|
+
tkflu/designs/__init__.py,sha256=fMeczuA77TmFRdnGNyGGMwpXRUdsCDa9TTbR8bX0taU,360
|
23
24
|
tkflu/designs/animation.py,sha256=yn9GCd7sTiHLGgJ6xOMCRqJnVT1XyEoE-Ots_XtU_Ag,1183
|
24
25
|
tkflu/designs/badge.py,sha256=SVwDrQPltscB7YDvw5qhPdepKy1S-pcdD6OyYfonwzQ,1463
|
25
|
-
tkflu/designs/button.py,sha256=
|
26
|
+
tkflu/designs/button.py,sha256=Ow1W6crfqgQfPrnIw7Wh52bRL0MICk7KcV4JcND15v8,12274
|
26
27
|
tkflu/designs/design.py,sha256=Gpe9SYgiasea_1wBA_ykd0qPzuVnUJMP9SVvrLdjU9Y,1357
|
27
28
|
tkflu/designs/entry.py,sha256=iUilCpOl_zs_PbklIWhKWkkaZGQbt0bCprrZwhE3CEs,5060
|
28
29
|
tkflu/designs/fonts/__init__.py,sha256=4kE0elI2pNYJksqvdJUXM6mM8Yk_2MQR90XGOa6rvs0,1285
|
@@ -33,30 +34,31 @@ tkflu/designs/gradient.py,sha256=f5_FiWfYYfQ_obAj1n2qtNKWvxfC1wCOIONozNa27xs,201
|
|
33
34
|
tkflu/designs/label.py,sha256=0uNOWxlGvpbeAh5NLb_ZTyyDTznW8i32rLXkVBkC19M,218
|
34
35
|
tkflu/designs/menubar.py,sha256=I3deMwvBUT1iASLMg7eXcovTI6fc-zvYPcnGPn9r4UU,295
|
35
36
|
tkflu/designs/primary_color.py,sha256=TKhGFX8jtFPQYmEV2f0Yq9jMuy0KG3ewTtsOBa1eds4,746
|
37
|
+
tkflu/designs/renderer.py,sha256=0gwEyMKtQRgxHtP_QJzD8u_syAGa9tiD7QHXyqjOHb0,447
|
36
38
|
tkflu/designs/scrollbar.py,sha256=bKH4xwCvsqACocIOXjPZIGULDxRIiLaoGVdYkwknCW8,938
|
37
39
|
tkflu/designs/slider.py,sha256=UDi4sw4K9fe-FGvhl4Hhr4zqZtfOdSiCjhdKFQmw6Q0,8088
|
38
40
|
tkflu/designs/text.py,sha256=0g8gvWZYXWYb_HrqGZhureZicdErnDyKCqH8LCXLqrg,5069
|
39
41
|
tkflu/designs/tooltip.py,sha256=OFUIO9-EMNjapF9zC5PuLW26HFGib-p800hNIxaWT5Q,442
|
40
|
-
tkflu/designs/window.py,sha256=
|
41
|
-
tkflu/entry.py,sha256=
|
42
|
-
tkflu/frame.py,sha256=
|
42
|
+
tkflu/designs/window.py,sha256=qhbkXxFApiY-1v2jG1GAgooY56__nW5uTdbZlTFOlek,709
|
43
|
+
tkflu/entry.py,sha256=EIKyGq7zNGGe_bF5UCBaKh5SKNzv8n_qSkJSUNoF2f0,11107
|
44
|
+
tkflu/frame.py,sha256=w_LdZMu7aDvQJkKZdfa4xChWuBBssGm7Ul7Gu38hNpE,11682
|
43
45
|
tkflu/icons.py,sha256=Xzrc9WzexncYEPXqnVg3ywWv_7kLZLyYC5WtaRv30PQ,7129
|
44
46
|
tkflu/image.py,sha256=w5CbUBsn5KG8EekLwMyXC5T0w6E_dlP8tlKjnut9194,58
|
45
47
|
tkflu/label.py,sha256=Y3kvljeXnvSq_rOPB-G_v87D3jS7nnF-kS41vRZS6jg,2981
|
46
|
-
tkflu/listbox.py,sha256=
|
48
|
+
tkflu/listbox.py,sha256=mtSUMXcf9Tk0zLdH0oSOncabxf74t5_DjeyfkUrFoFg,9989
|
47
49
|
tkflu/litenav.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
|
-
tkflu/menu.py,sha256=
|
49
|
-
tkflu/menubar.py,sha256=
|
50
|
-
tkflu/popupmenu.py,sha256=
|
51
|
-
tkflu/popupwindow.py,sha256=
|
52
|
-
tkflu/scrollbar.py,sha256=
|
53
|
-
tkflu/slider.py,sha256=
|
54
|
-
tkflu/text.py,sha256=
|
50
|
+
tkflu/menu.py,sha256=s6S1OAyGBg5d_1bDK-5jfazUFiMqhEyJMODpox4Mku4,3360
|
51
|
+
tkflu/menubar.py,sha256=Z8Gl-sUynMmurLEbSQBvH2nfap8YJuNnhqYWdsgK60k,6480
|
52
|
+
tkflu/popupmenu.py,sha256=IJ_3atesdu1tbXKg2O1IwfZWO6iSN7yirvX7eOWOUgo,1587
|
53
|
+
tkflu/popupwindow.py,sha256=lmbeNDapSGkerBu_TCifFQJ3xTQ_aKKrMXHTdVjfHR8,3227
|
54
|
+
tkflu/scrollbar.py,sha256=p0mpeg1q8WLCfuV54h66D8GhDjd42sxWSpHQWESZ59s,14156
|
55
|
+
tkflu/slider.py,sha256=9O4C1D3sWkptky6VVPRfi2NstkYPMejeyUc8vA3HaJY,20760
|
56
|
+
tkflu/text.py,sha256=Z3xGQnqXNvwP2dBHap-_n_AjjFUzfpozi6YLOIfDoQA,12987
|
55
57
|
tkflu/thememanager.py,sha256=N2aMX2CfMvXFYz0N8vi-9zHjxzvGumhDsKJJ0UgroAA,1914
|
56
|
-
tkflu/togglebutton.py,sha256=
|
57
|
-
tkflu/tooltip.py,sha256=
|
58
|
+
tkflu/togglebutton.py,sha256=viFNReE8i95ySnFqFx_Se4n5GstQhLnGlpNRsC7ngiA,21058
|
59
|
+
tkflu/tooltip.py,sha256=i3H1H-LiI-ggbqrU0585kCg3VjZ4Y4RwMZ0oVn6jqYg,4410
|
58
60
|
tkflu/toplevel.py,sha256=dPrnhHTiciJtrlsh5oZNuv77Q-YCRK6OgQQ0mrhfTeo,1382
|
59
61
|
tkflu/window.py,sha256=2LjgL2KZIAYA04fXWQvfiNMYj_PKzlpSuEZrR94qHAs,1483
|
60
|
-
tkfluent-0.1.
|
61
|
-
tkfluent-0.1.
|
62
|
-
tkfluent-0.1.
|
62
|
+
tkfluent-0.1.6.dist-info/METADATA,sha256=vRtFFxYCmrCiehvxGc_Q_208soFY78UnkycvVb3WKZM,38240
|
63
|
+
tkfluent-0.1.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
64
|
+
tkfluent-0.1.6.dist-info/RECORD,,
|
File without changes
|