tkfluent 0.0.3__py3-none-any.whl → 0.0.5__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/__init__.py +6 -2
- tkflu/__main__.py +20 -11
- tkflu/badge.py +41 -32
- tkflu/button.py +126 -208
- tkflu/bwm.py +50 -30
- tkflu/constants.py +15 -0
- tkflu/defs.py +16 -0
- tkflu/designs/__init__.py +2 -0
- tkflu/designs/badge.py +44 -0
- tkflu/designs/button.py +304 -0
- tkflu/designs/design.py +27 -0
- tkflu/designs/entry.py +164 -0
- tkflu/designs/fonts/__init__.py +20 -0
- tkflu/designs/fonts/segoeui.ttf +0 -0
- tkflu/designs/frame.py +37 -0
- tkflu/designs/primary_color.py +25 -0
- tkflu/designs/text.py +164 -0
- tkflu/designs/window.py +21 -0
- tkflu/entry.py +178 -69
- tkflu/frame.py +84 -43
- tkflu/icons.py +47 -0
- tkflu/label.py +2 -3
- tkflu/menu.py +43 -4
- tkflu/popupmenu.py +4 -29
- tkflu/popupwindow.py +31 -0
- tkflu/text.py +174 -65
- tkflu/togglebutton.py +204 -161
- tkflu/tooltip.py +8 -0
- tkflu/toplevel.py +3 -4
- tkflu/window.py +6 -3
- {tkfluent-0.0.3.dist-info → tkfluent-0.0.5.dist-info}/METADATA +3 -1
- tkfluent-0.0.5.dist-info/RECORD +42 -0
- tkflu/winico.py +0 -25
- tkfluent-0.0.3.dist-info/RECORD +0 -27
- {tkfluent-0.0.3.dist-info → tkfluent-0.0.5.dist-info}/WHEEL +0 -0
tkflu/__init__.py
CHANGED
@@ -9,19 +9,23 @@ Fluent设计的tkinter组件库(模板)
|
|
9
9
|
|
10
10
|
from .badge import FluBadge
|
11
11
|
from .button import FluButton
|
12
|
+
from .constants import *
|
13
|
+
from .defs import *
|
12
14
|
from .entry import FluEntry
|
13
15
|
from .frame import FluFrame
|
14
16
|
from .label import FluLabel
|
15
17
|
from .menu import FluMenu
|
16
18
|
from .menubar import FluMenuBar
|
17
|
-
from .popupmenu import FluPopupMenu
|
19
|
+
from .popupmenu import FluPopupMenu, FluPopupMenuWindow
|
20
|
+
from .popupwindow import FluPopupWindow
|
18
21
|
from .text import FluText
|
19
22
|
from .thememanager import FluThemeManager
|
20
23
|
from .togglebutton import FluToggleButton
|
24
|
+
from .tooltip import FluToolTip
|
21
25
|
from .toplevel import FluToplevel
|
22
26
|
from .window import FluWindow
|
23
|
-
#from .winico import FluWinico
|
24
27
|
|
28
|
+
from .designs import *
|
25
29
|
|
26
30
|
FluChip = FluBadge
|
27
31
|
FluPushButton = FluButton
|
tkflu/__main__.py
CHANGED
@@ -2,6 +2,8 @@ from tkflu import *
|
|
2
2
|
from tkinter import *
|
3
3
|
from tkinter.font import *
|
4
4
|
|
5
|
+
orange_primary_color()
|
6
|
+
|
5
7
|
root = FluWindow()
|
6
8
|
#root.wincustom(way=0)
|
7
9
|
root.wm_geometry("360x500")
|
@@ -27,14 +29,20 @@ menu2 = FluMenu(height=93)
|
|
27
29
|
menu2.add_command(
|
28
30
|
label="FluMenu3-1", width=80, command=lambda: print("FluMenu3-1 -> Clicked")
|
29
31
|
)
|
30
|
-
|
31
|
-
|
32
|
+
|
33
|
+
menu3 = FluMenu(height=46, width=10)
|
34
|
+
menu3.add_command(
|
35
|
+
label="FluMenu3-2-1", width=80, command=lambda: print("FluMenu3-2-1 -> Clicked")
|
36
|
+
)
|
37
|
+
|
38
|
+
menu2.add_cascade(
|
39
|
+
label="FluMenu3-2", width=80, menu=menu3
|
32
40
|
)
|
33
41
|
menubar.add_cascade(
|
34
42
|
label="FluMenu3", width=80, menu=menu2
|
35
43
|
)
|
36
44
|
|
37
|
-
menubar.pack(fill="x"
|
45
|
+
menubar.pack(fill="x")
|
38
46
|
|
39
47
|
frame = FluFrame(root)
|
40
48
|
|
@@ -54,21 +62,22 @@ button2 = FluButton(
|
|
54
62
|
)
|
55
63
|
button2.pack(fill="x", padx=5, pady=5)
|
56
64
|
|
57
|
-
def toggle1():
|
58
|
-
print(f"FluToggleButton -> Toggled -> Checked: {togglebutton1.dcget('checked')}")
|
59
|
-
if togglebutton1.dcget('checked'):
|
60
|
-
thememanager.mode("dark")
|
61
|
-
else:
|
62
|
-
thememanager.mode("light")
|
63
|
-
|
64
65
|
togglebutton1 = FluToggleButton(
|
65
|
-
frame, text="FluToggleButton", command=
|
66
|
+
frame, text="FluToggleButton", command=lambda: print(f"FluToggleButton -> Toggled -> Checked: {togglebutton1.dcget('checked')}")
|
66
67
|
)
|
67
68
|
togglebutton1.pack(fill="x", padx=5, pady=5)
|
68
69
|
|
70
|
+
togglebutton2 = FluToggleButton(
|
71
|
+
frame, text="Toggle Theme", command=lambda: toggle_theme(togglebutton2, thememanager)
|
72
|
+
)
|
73
|
+
togglebutton2.pack(fill="x", padx=5, pady=5)
|
74
|
+
|
69
75
|
entry1 = FluEntry(frame)
|
70
76
|
entry1.pack(fill="x", padx=5, pady=5)
|
71
77
|
|
78
|
+
entry2 = FluEntry(frame, height=50)
|
79
|
+
entry2.pack(fill="x", padx=5, pady=5)
|
80
|
+
|
72
81
|
text1 = FluText(frame)
|
73
82
|
text1.pack(fill="x", padx=5, pady=5)
|
74
83
|
|
tkflu/badge.py
CHANGED
@@ -2,18 +2,30 @@ from tkdeft.windows.draw import DSvgDraw
|
|
2
2
|
from tkdeft.windows.canvas import DCanvas
|
3
3
|
from tkdeft.windows.drawwidget import DDrawWidget
|
4
4
|
|
5
|
+
from .designs.badge import badge
|
6
|
+
|
5
7
|
|
6
8
|
class FluBadgeDraw(DSvgDraw):
|
7
9
|
def create_roundrect(self,
|
8
10
|
x1, y1, x2, y2, temppath=None,
|
9
|
-
fill="transparent",
|
11
|
+
fill="transparent", fill_opacity=1,
|
12
|
+
outline="black", outline_opacity=1, width=1
|
10
13
|
):
|
11
14
|
drawing = self.create_drawing(x2 - x1, y2 - y1, temppath=temppath)
|
12
15
|
drawing[1].add(
|
13
16
|
drawing[1].rect(
|
14
17
|
(x1, y1), (x2 - x1, y2 - y1), 20, 25,
|
15
|
-
|
16
|
-
|
18
|
+
id=".Badge", transform="translate(0.500000 0.500000)",
|
19
|
+
fill=fill, fill_opacity=fill_opacity,
|
20
|
+
stroke=outline, stroke_opacity=outline_opacity, stroke_width=width,
|
21
|
+
)
|
22
|
+
)
|
23
|
+
drawing[1].add(
|
24
|
+
drawing[1].rect(
|
25
|
+
(x1, y1), (x2 - x1, y2 - y1), 20, 25,
|
26
|
+
id=".Badge", transform="translate(0.500000 0.500000)",
|
27
|
+
fill="white", fill_opacity=0,
|
28
|
+
stroke=outline, stroke_opacity=outline_opacity, stroke_width=width,
|
17
29
|
)
|
18
30
|
)
|
19
31
|
drawing[1].save()
|
@@ -25,11 +37,13 @@ class FluBadgeCanvas(DCanvas):
|
|
25
37
|
|
26
38
|
def create_round_rectangle(self,
|
27
39
|
x1, y1, x2, y2, temppath=None,
|
28
|
-
fill="transparent",
|
40
|
+
fill="transparent", fill_opacity=1,
|
41
|
+
outline="black", outline_opacity=1, width=1
|
29
42
|
):
|
30
43
|
self._img = self.svgdraw.create_roundrect(
|
31
44
|
x1, y1, x2, y2, temppath=temppath,
|
32
|
-
fill=fill,
|
45
|
+
fill=fill, fill_opacity=fill_opacity,
|
46
|
+
outline=outline, outline_opacity=outline_opacity, width=width
|
33
47
|
)
|
34
48
|
self._tkimg = self.svgdraw.create_tksvg_image(self._img)
|
35
49
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
@@ -72,9 +86,8 @@ class FluBadge(FluBadgeCanvas, DDrawWidget):
|
|
72
86
|
|
73
87
|
self.bind("<<Clicked>>", lambda event=None: self.focus_set(), add="+")
|
74
88
|
|
75
|
-
|
76
|
-
|
77
|
-
self.attributes.font = SegoeFont()
|
89
|
+
from .defs import set_default_font
|
90
|
+
set_default_font(font, self.attributes)
|
78
91
|
|
79
92
|
def _init(self, mode, style):
|
80
93
|
from easydict import EasyDict
|
@@ -86,7 +99,9 @@ class FluBadge(FluBadgeCanvas, DDrawWidget):
|
|
86
99
|
"font": None,
|
87
100
|
|
88
101
|
"back_color": None,
|
102
|
+
"back_opacity": None,
|
89
103
|
"border_color": None,
|
104
|
+
"border_color_opacity": None,
|
90
105
|
"border_width": None,
|
91
106
|
"text_color": None
|
92
107
|
}
|
@@ -107,13 +122,16 @@ class FluBadge(FluBadgeCanvas, DDrawWidget):
|
|
107
122
|
self.delete("all")
|
108
123
|
|
109
124
|
_back_color = self.attributes.back_color
|
125
|
+
_back_opacity = self.attributes.back_opacity
|
110
126
|
_border_color = self.attributes.border_color
|
127
|
+
_border_color_opacity = self.attributes.border_color_opacity
|
111
128
|
_border_width = self.attributes.border_width
|
112
129
|
_text_color = self.attributes.text_color
|
113
130
|
|
114
131
|
self.element_border = self.create_round_rectangle(
|
115
132
|
0, 0, self.winfo_width(), self.winfo_height(), temppath=self.temppath,
|
116
|
-
fill=_back_color,
|
133
|
+
fill=_back_color, fill_opacity=_back_opacity,
|
134
|
+
outline=_border_color, outline_opacity=_border_color_opacity, width=_border_width
|
117
135
|
)
|
118
136
|
|
119
137
|
self.element_text = self.create_text(
|
@@ -137,34 +155,25 @@ class FluBadge(FluBadgeCanvas, DDrawWidget):
|
|
137
155
|
else:
|
138
156
|
self._light()
|
139
157
|
|
140
|
-
def
|
158
|
+
def _theme(self, mode, style):
|
159
|
+
n = badge(mode, style)
|
141
160
|
self.dconfigure(
|
142
|
-
back_color="
|
143
|
-
|
144
|
-
|
145
|
-
|
161
|
+
back_color=n["back_color"],
|
162
|
+
back_opacity=n["back_opacity"],
|
163
|
+
border_color=n["border_color"],
|
164
|
+
border_color_opacity=n["border_color_opacity"],
|
165
|
+
border_width=n["border_width"],
|
166
|
+
text_color=n["text_color"],
|
146
167
|
)
|
147
168
|
|
169
|
+
def _light(self):
|
170
|
+
self._theme("light", "standard")
|
171
|
+
|
148
172
|
def _light_accent(self):
|
149
|
-
self.
|
150
|
-
back_color="#005fb8",
|
151
|
-
border_color="#005fb8",
|
152
|
-
border_width=1,
|
153
|
-
text_color="#ffffff",
|
154
|
-
)
|
173
|
+
self._theme("light", "accent")
|
155
174
|
|
156
175
|
def _dark(self):
|
157
|
-
self.
|
158
|
-
back_color="#242424",
|
159
|
-
border_color="#242424",
|
160
|
-
border_width=1,
|
161
|
-
text_color="#ffffff",
|
162
|
-
)
|
176
|
+
self._theme("dark", "standard")
|
163
177
|
|
164
178
|
def _dark_accent(self):
|
165
|
-
self.
|
166
|
-
back_color="#60cdff",
|
167
|
-
border_color="#60cdff",
|
168
|
-
border_width=1,
|
169
|
-
text_color="#000000",
|
170
|
-
)
|
179
|
+
self._theme("dark", "accent")
|
tkflu/button.py
CHANGED
@@ -2,11 +2,14 @@ from tkdeft.windows.draw import DSvgDraw
|
|
2
2
|
from tkdeft.windows.canvas import DCanvas
|
3
3
|
from tkdeft.windows.drawwidget import DDrawWidget
|
4
4
|
|
5
|
+
from .designs.button import button
|
6
|
+
|
5
7
|
|
6
8
|
class FluButtonDraw(DSvgDraw):
|
7
9
|
def create_roundrect(self,
|
8
10
|
x1, y1, x2, y2, radius, radiusy=None, temppath=None,
|
9
|
-
fill="transparent",
|
11
|
+
fill="transparent", fill_opacity=1,
|
12
|
+
outline="black", outline2=None, outline_opacity=1, outline2_opacity=1, width=1,
|
10
13
|
):
|
11
14
|
if radiusy:
|
12
15
|
_rx = radius
|
@@ -14,15 +17,23 @@ class FluButtonDraw(DSvgDraw):
|
|
14
17
|
else:
|
15
18
|
_rx, _ry = radius, radius
|
16
19
|
drawing = self.create_drawing(x2 - x1, y2 - y1, temppath=temppath)
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
20
|
+
if outline2:
|
21
|
+
border = drawing[1].linearGradient(start=(x1, y1), end=(x1, y2), id="DButton.Border",
|
22
|
+
gradientUnits="userSpaceOnUse")
|
23
|
+
border.add_stop_color("0.9", outline, outline_opacity)
|
24
|
+
border.add_stop_color("1", outline2, outline2_opacity)
|
25
|
+
drawing[1].defs.add(border)
|
26
|
+
stroke = f"url(#{border.get_id()})"
|
27
|
+
stroke_opacity = 1
|
28
|
+
else:
|
29
|
+
stroke = outline
|
30
|
+
stroke_opacity = outline_opacity
|
21
31
|
drawing[1].add(
|
22
32
|
drawing[1].rect(
|
23
33
|
(x1, y1), (x2 - x1, y2 - y1), _rx, _ry,
|
24
|
-
fill=fill,
|
25
|
-
stroke=
|
34
|
+
fill=fill, fill_opacity=fill_opacity,
|
35
|
+
stroke=stroke, stroke_width=width, stroke_opacity=stroke_opacity,
|
36
|
+
transform="translate(0.500000 0.500000)"
|
26
37
|
)
|
27
38
|
)
|
28
39
|
drawing[1].save()
|
@@ -34,11 +45,15 @@ class FluButtonCanvas(DCanvas):
|
|
34
45
|
|
35
46
|
def create_round_rectangle(self,
|
36
47
|
x1, y1, x2, y2, r1, r2=None, temppath=None,
|
37
|
-
fill="transparent",
|
48
|
+
fill="transparent", fill_opacity=1,
|
49
|
+
outline="black", outline2="black", outline_opacity=1, outline2_opacity=1,
|
50
|
+
width=1,
|
38
51
|
):
|
39
52
|
self._img = self.svgdraw.create_roundrect(
|
40
53
|
x1, y1, x2, y2, r1, r2, temppath=temppath,
|
41
|
-
fill=fill,
|
54
|
+
fill=fill, fill_opacity=fill_opacity,
|
55
|
+
outline=outline, outline2=outline2, outline_opacity=outline_opacity, outline2_opacity=outline2_opacity,
|
56
|
+
width=width,
|
42
57
|
)
|
43
58
|
self._tkimg = self.svgdraw.create_tksvg_image(self._img)
|
44
59
|
return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
|
@@ -55,6 +70,7 @@ class FluButton(FluButtonCanvas, DDrawWidget):
|
|
55
70
|
font=None,
|
56
71
|
mode="light",
|
57
72
|
style="standard",
|
73
|
+
state="normal",
|
58
74
|
**kwargs):
|
59
75
|
self._init(mode, style)
|
60
76
|
|
@@ -67,7 +83,8 @@ class FluButton(FluButtonCanvas, DDrawWidget):
|
|
67
83
|
|
68
84
|
self.dconfigure(
|
69
85
|
text=text,
|
70
|
-
command=command
|
86
|
+
command=command,
|
87
|
+
state=state,
|
71
88
|
)
|
72
89
|
|
73
90
|
self.bind("<<Clicked>>", lambda event=None: self.focus_set(), add="+")
|
@@ -75,9 +92,8 @@ class FluButton(FluButtonCanvas, DDrawWidget):
|
|
75
92
|
|
76
93
|
self.bind("<Return>", lambda event=None: self.attributes.command(), add="+") # 可以使用回车键模拟点击
|
77
94
|
|
78
|
-
|
79
|
-
|
80
|
-
self.attributes.font = SegoeFont()
|
95
|
+
from .defs import set_default_font
|
96
|
+
set_default_font(font, self.attributes)
|
81
97
|
|
82
98
|
def _init(self, mode, style):
|
83
99
|
|
@@ -88,31 +104,12 @@ class FluButton(FluButtonCanvas, DDrawWidget):
|
|
88
104
|
"text": "",
|
89
105
|
"command": None,
|
90
106
|
"font": None,
|
107
|
+
"state": "normal",
|
91
108
|
|
92
|
-
"rest": {
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
"border_width": 1,
|
97
|
-
"radius": 6,
|
98
|
-
"text_color": "#1b1b1b",
|
99
|
-
},
|
100
|
-
"hover": {
|
101
|
-
"back_color": "#fcfcfc",
|
102
|
-
"border_color": "#f0f0f0",
|
103
|
-
"border_color2": "#d6d6d6",
|
104
|
-
"border_width": 1,
|
105
|
-
"radius": 6,
|
106
|
-
"text_color": "#1b1b1b",
|
107
|
-
},
|
108
|
-
"pressed": {
|
109
|
-
"back_color": "#fdfdfd",
|
110
|
-
"border_color": "#f0f0f0",
|
111
|
-
"border_color2": "#f0f0f0",
|
112
|
-
"border_width": 1,
|
113
|
-
"radius": 6,
|
114
|
-
"text_color": "#636363",
|
115
|
-
}
|
109
|
+
"rest": {},
|
110
|
+
"hover": {},
|
111
|
+
"pressed": {},
|
112
|
+
"disabled": {}
|
116
113
|
}
|
117
114
|
)
|
118
115
|
|
@@ -121,35 +118,44 @@ class FluButton(FluButtonCanvas, DDrawWidget):
|
|
121
118
|
def _draw(self, event=None):
|
122
119
|
super()._draw(event)
|
123
120
|
|
121
|
+
width = self.winfo_width()
|
122
|
+
height = self.winfo_height()
|
123
|
+
|
124
124
|
self.delete("all")
|
125
125
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
126
|
+
state = self.dcget("state")
|
127
|
+
|
128
|
+
_dict = None
|
129
|
+
|
130
|
+
if state == "normal":
|
131
|
+
if self.enter:
|
132
|
+
if self.button1:
|
133
|
+
_dict = self.attributes.pressed
|
134
|
+
else:
|
135
|
+
_dict = self.attributes.hover
|
134
136
|
else:
|
135
|
-
|
136
|
-
_border_color = self.attributes.hover.border_color
|
137
|
-
_border_color2 = self.attributes.hover.border_color2
|
138
|
-
_border_width = self.attributes.hover.border_width
|
139
|
-
_radius = self.attributes.hover.radius
|
140
|
-
_text_color = self.attributes.hover.text_color
|
137
|
+
_dict = self.attributes.rest
|
141
138
|
else:
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
139
|
+
_dict = self.attributes.disabled
|
140
|
+
|
141
|
+
_back_color = _dict.back_color
|
142
|
+
_back_opacity = _dict.back_opacity
|
143
|
+
_border_color = _dict.border_color
|
144
|
+
_border_color_opacity = _dict.border_color_opacity
|
145
|
+
_border_color2 = _dict.border_color2
|
146
|
+
_border_color2_opacity = _dict.border_color2_opacity
|
147
|
+
_border_width = _dict.border_width
|
148
|
+
_radius = _dict.radius
|
149
|
+
_text_color = _dict.text_color
|
148
150
|
|
149
151
|
self.element_border = self.create_round_rectangle(
|
150
|
-
0, 0,
|
151
|
-
fill=_back_color,
|
152
|
+
0, 0, width, height, _radius, temppath=self.temppath,
|
153
|
+
fill=_back_color, fill_opacity=_back_opacity,
|
154
|
+
outline=_border_color, outline_opacity=_border_color_opacity, outline2=_border_color2,
|
155
|
+
outline2_opacity=_border_color2_opacity,
|
156
|
+
width=_border_width,
|
152
157
|
)
|
158
|
+
|
153
159
|
self.element_text = self.create_text(
|
154
160
|
self.winfo_width() / 2, self.winfo_height() / 2, anchor="center",
|
155
161
|
fill=_text_color, text=self.attributes.text, font=self.attributes.font
|
@@ -175,173 +181,85 @@ class FluButton(FluButtonCanvas, DDrawWidget):
|
|
175
181
|
else:
|
176
182
|
self._light()
|
177
183
|
|
178
|
-
def
|
184
|
+
def _theme(self, mode, style):
|
185
|
+
r = button(mode, style, "rest")
|
186
|
+
h = button(mode, style, "hover")
|
187
|
+
p = button(mode, style, "pressed")
|
188
|
+
d = button(mode, style, "disabled")
|
179
189
|
self.dconfigure(
|
180
190
|
rest={
|
181
|
-
"back_color": "
|
182
|
-
"
|
183
|
-
"
|
184
|
-
"
|
185
|
-
"
|
186
|
-
"
|
191
|
+
"back_color": r["back_color"],
|
192
|
+
"back_opacity": r["back_opacity"],
|
193
|
+
"border_color": r["border_color"],
|
194
|
+
"border_color_opacity": r["border_color_opacity"],
|
195
|
+
"border_color2": r["border_color2"],
|
196
|
+
"border_color2_opacity": r["border_color2_opacity"],
|
197
|
+
"border_width": r["border_width"],
|
198
|
+
"radius": r["radius"],
|
199
|
+
"text_color": r["text_color"],
|
187
200
|
},
|
188
201
|
hover={
|
189
|
-
"back_color": "
|
190
|
-
"
|
191
|
-
"
|
192
|
-
"
|
193
|
-
"
|
194
|
-
"
|
202
|
+
"back_color": h["back_color"],
|
203
|
+
"back_opacity": h["back_opacity"],
|
204
|
+
"border_color": h["border_color"],
|
205
|
+
"border_color_opacity": h["border_color_opacity"],
|
206
|
+
"border_color2": h["border_color2"],
|
207
|
+
"border_color2_opacity": h["border_color2_opacity"],
|
208
|
+
"border_width": h["border_width"],
|
209
|
+
"radius": h["radius"],
|
210
|
+
"text_color": h["text_color"],
|
195
211
|
},
|
196
212
|
pressed={
|
197
|
-
"back_color": "
|
198
|
-
"
|
199
|
-
"
|
200
|
-
"
|
201
|
-
"
|
202
|
-
"
|
213
|
+
"back_color": p["back_color"],
|
214
|
+
"back_opacity": p["back_opacity"],
|
215
|
+
"border_color": p["border_color"],
|
216
|
+
"border_color_opacity": p["border_color_opacity"],
|
217
|
+
"border_color2": p["border_color2"],
|
218
|
+
"border_color2_opacity": p["border_color2_opacity"],
|
219
|
+
"border_width": p["border_width"],
|
220
|
+
"radius": p["radius"],
|
221
|
+
"text_color": p["text_color"],
|
222
|
+
},
|
223
|
+
disabled={
|
224
|
+
"back_color": d["back_color"],
|
225
|
+
"back_opacity": d["back_opacity"],
|
226
|
+
"border_color": d["border_color"],
|
227
|
+
"border_color_opacity": d["border_color_opacity"],
|
228
|
+
"border_color2": d["border_color2"],
|
229
|
+
"border_color2_opacity": d["border_color2_opacity"],
|
230
|
+
"border_width": d["border_width"],
|
231
|
+
"radius": d["radius"],
|
232
|
+
"text_color": d["text_color"],
|
203
233
|
}
|
204
234
|
)
|
205
235
|
|
236
|
+
def _light(self):
|
237
|
+
self._theme("light", "standard")
|
238
|
+
|
206
239
|
def _light_menu(self):
|
207
|
-
self.
|
208
|
-
rest={
|
209
|
-
"back_color": "#ffffff",
|
210
|
-
"border_color": "white",
|
211
|
-
"border_color2": "white",
|
212
|
-
"border_width": 0,
|
213
|
-
"radius": 6,
|
214
|
-
"text_color": "#1b1b1b",
|
215
|
-
},
|
216
|
-
hover={
|
217
|
-
"back_color": "#eaeaea",
|
218
|
-
"border_color": "#f0f0f0",
|
219
|
-
"border_color2": "#d6d6d6",
|
220
|
-
"border_width": 0,
|
221
|
-
"radius": 6,
|
222
|
-
"text_color": "#1b1b1b",
|
223
|
-
},
|
224
|
-
pressed={
|
225
|
-
"back_color": "#ededed",
|
226
|
-
"border_color": "#f0f0f0",
|
227
|
-
"border_color2": "#f0f0f0",
|
228
|
-
"border_width": 0,
|
229
|
-
"radius": 6,
|
230
|
-
"text_color": "#636363",
|
231
|
-
}
|
232
|
-
)
|
240
|
+
self._theme("light", "menu")
|
233
241
|
|
234
242
|
def _light_accent(self):
|
235
|
-
self.
|
236
|
-
rest={
|
237
|
-
"back_color": "#005fb8",
|
238
|
-
"border_color": "#146cbe",
|
239
|
-
"border_color2": "#00396e",
|
240
|
-
"border_width": 1,
|
241
|
-
"radius": 6,
|
242
|
-
"text_color": "#ffffff",
|
243
|
-
},
|
244
|
-
hover={
|
245
|
-
"back_color": "#0359a9",
|
246
|
-
"border_color": "#1766b0",
|
247
|
-
"border_color2": "#0f4373",
|
248
|
-
"border_width": 1,
|
249
|
-
"radius": 6,
|
250
|
-
"text_color": "#ffffff",
|
251
|
-
},
|
252
|
-
pressed={
|
253
|
-
"back_color": "#005fb8",
|
254
|
-
"border_color": "#4389ca",
|
255
|
-
"border_color2": "#4389ca",
|
256
|
-
"border_width": 1,
|
257
|
-
"radius": 6,
|
258
|
-
"text_color": "#b4cbe0",
|
259
|
-
}
|
260
|
-
)
|
243
|
+
self._theme("light", "accent")
|
261
244
|
|
262
245
|
def _dark(self):
|
263
|
-
self.
|
264
|
-
rest={
|
265
|
-
"back_color": "#272727",
|
266
|
-
"border_color": "#303030",
|
267
|
-
"border_color2": "#262626",
|
268
|
-
"border_width": 1,
|
269
|
-
"radius": 6,
|
270
|
-
"text_color": "#ffffff",
|
271
|
-
},
|
272
|
-
hover={
|
273
|
-
"back_color": "#2d2d2d",
|
274
|
-
"border_color": "#303030",
|
275
|
-
"border_color2": "#262626",
|
276
|
-
"border_width": 1,
|
277
|
-
"radius": 6,
|
278
|
-
"text_color": "#ffffff",
|
279
|
-
},
|
280
|
-
pressed={
|
281
|
-
"back_color": "#212121",
|
282
|
-
"border_color": "#2a2a2a",
|
283
|
-
"border_color2": "#262626",
|
284
|
-
"border_width": 1,
|
285
|
-
"radius": 6,
|
286
|
-
"text_color": "#cfcfcf",
|
287
|
-
}
|
288
|
-
)
|
246
|
+
self._theme("dark", "standard")
|
289
247
|
|
290
248
|
def _dark_menu(self):
|
291
|
-
self.
|
292
|
-
rest={
|
293
|
-
"back_color": "#202020",
|
294
|
-
"border_color": "black",
|
295
|
-
"border_color2": "black",
|
296
|
-
"border_width": 0,
|
297
|
-
"radius": 6,
|
298
|
-
"text_color": "#ffffff",
|
299
|
-
},
|
300
|
-
hover={
|
301
|
-
"back_color": "#2d2d2d",
|
302
|
-
"border_color": "#303030",
|
303
|
-
"border_color2": "#262626",
|
304
|
-
"border_width": 0,
|
305
|
-
"radius": 6,
|
306
|
-
"text_color": "#ffffff",
|
307
|
-
},
|
308
|
-
pressed={
|
309
|
-
"back_color": "#292929",
|
310
|
-
"border_color": "#2a2a2a",
|
311
|
-
"border_color2": "#262626",
|
312
|
-
"border_width": 0,
|
313
|
-
"radius": 6,
|
314
|
-
"text_color": "#cfcfcf",
|
315
|
-
}
|
316
|
-
)
|
249
|
+
self._theme("dark", "menu")
|
317
250
|
|
318
251
|
def _dark_accent(self):
|
319
|
-
self.
|
320
|
-
rest={
|
321
|
-
"back_color": "#60cdff",
|
322
|
-
"border_color": "#6cd1ff",
|
323
|
-
"border_color2": "#56b4df",
|
324
|
-
"border_width": 1,
|
325
|
-
"radius": 6,
|
326
|
-
"text_color": "#000000",
|
327
|
-
},
|
328
|
-
hover={
|
329
|
-
"back_color": "#5abce9",
|
330
|
-
"border_color": "#67c1eb",
|
331
|
-
"border_color2": "#50a5cc",
|
332
|
-
"border_width": 1,
|
333
|
-
"radius": 6,
|
334
|
-
"text_color": "#000000",
|
335
|
-
},
|
336
|
-
pressed={
|
337
|
-
"back_color": "#52a9d1",
|
338
|
-
"border_color": "#60b0d5",
|
339
|
-
"border_color2": "#60b0d5",
|
340
|
-
"border_width": 1,
|
341
|
-
"radius": 6,
|
342
|
-
"text_color": "#295468",
|
343
|
-
}
|
344
|
-
)
|
252
|
+
self._theme("dark", "accent")
|
345
253
|
|
346
254
|
def invoke(self):
|
347
255
|
self.attributes.command()
|
256
|
+
|
257
|
+
def _event_off_button1(self, event=None):
|
258
|
+
self.button1 = False
|
259
|
+
|
260
|
+
self._draw(event)
|
261
|
+
|
262
|
+
if self.enter:
|
263
|
+
# self.focus_set()
|
264
|
+
if self.dcget("state") == "normal":
|
265
|
+
self.event_generate("<<Clicked>>")
|