tkfluent 0.0.3__py3-none-any.whl → 0.0.4__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 CHANGED
@@ -9,15 +9,18 @@ Fluent设计的tkinter组件库(模板)
9
9
 
10
10
  from .badge import FluBadge
11
11
  from .button import FluButton
12
+ from .constants import *
12
13
  from .entry import FluEntry
13
14
  from .frame import FluFrame
14
15
  from .label import FluLabel
15
16
  from .menu import FluMenu
16
17
  from .menubar import FluMenuBar
17
- from .popupmenu import FluPopupMenu
18
+ from .popupmenu import FluPopupMenu, FluPopupMenuWindow
19
+ from .popupwindow import FluPopupWindow
18
20
  from .text import FluText
19
21
  from .thememanager import FluThemeManager
20
22
  from .togglebutton import FluToggleButton
23
+ from .tooltip import FluToolTip
21
24
  from .toplevel import FluToplevel
22
25
  from .window import FluWindow
23
26
  #from .winico import FluWinico
tkflu/__main__.py CHANGED
@@ -27,14 +27,20 @@ menu2 = FluMenu(height=93)
27
27
  menu2.add_command(
28
28
  label="FluMenu3-1", width=80, command=lambda: print("FluMenu3-1 -> Clicked")
29
29
  )
30
- menu2.add_command(
31
- label="FluMenu3-2", width=80, command=lambda: print("FluMenu3-2 -> Clicked")
30
+
31
+ menu3 = FluMenu(height=46, width=10)
32
+ menu3.add_command(
33
+ label="FluMenu3-2-1", width=80, command=lambda: print("FluMenu3-2-1 -> Clicked")
34
+ )
35
+
36
+ menu2.add_cascade(
37
+ label="FluMenu3-2", width=80, menu=menu3
32
38
  )
33
39
  menubar.add_cascade(
34
40
  label="FluMenu3", width=80, menu=menu2
35
41
  )
36
42
 
37
- menubar.pack(fill="x",)
43
+ menubar.pack(fill="x", )
38
44
 
39
45
  frame = FluFrame(root)
40
46
 
@@ -54,6 +60,7 @@ button2 = FluButton(
54
60
  )
55
61
  button2.pack(fill="x", padx=5, pady=5)
56
62
 
63
+
57
64
  def toggle1():
58
65
  print(f"FluToggleButton -> Toggled -> Checked: {togglebutton1.dcget('checked')}")
59
66
  if togglebutton1.dcget('checked'):
@@ -61,6 +68,7 @@ def toggle1():
61
68
  else:
62
69
  thememanager.mode("light")
63
70
 
71
+
64
72
  togglebutton1 = FluToggleButton(
65
73
  frame, text="FluToggleButton", command=toggle1
66
74
  )
tkflu/button.py CHANGED
@@ -4,25 +4,34 @@ from tkdeft.windows.drawwidget import DDrawWidget
4
4
 
5
5
 
6
6
  class FluButtonDraw(DSvgDraw):
7
- def create_roundrect(self,
8
- x1, y1, x2, y2, radius, radiusy=None, temppath=None,
9
- fill="transparent", outline="black", outline2="black", width=1
10
- ):
7
+ def create_roundrect_with_text(self,
8
+ x1, y1, x2, y2, radius, radiusy=None, temppath=None,
9
+ fill="transparent", fill_opacity=1,
10
+ outline="black", outline2=None, outline_opacity=1, outline2_opacity=1, width=1,
11
+ ):
11
12
  if radiusy:
12
13
  _rx = radius
13
14
  _ry = radiusy
14
15
  else:
15
16
  _rx, _ry = radius, radius
16
17
  drawing = self.create_drawing(x2 - x1, y2 - y1, temppath=temppath)
17
- border = drawing[1].linearGradient(start=(x1, y1), end=(x1, y2), id="DButton.Border")
18
- border.add_stop_color("0%", outline)
19
- border.add_stop_color("100%", outline2)
20
- drawing[1].defs.add(border)
18
+ if outline2:
19
+ border = drawing[1].linearGradient(start=(x1, y1), end=(x1, y2), id="DButton.Border",
20
+ gradientUnits="userSpaceOnUse")
21
+ border.add_stop_color("0.9", outline, outline_opacity)
22
+ border.add_stop_color("1", outline2, outline2_opacity)
23
+ drawing[1].defs.add(border)
24
+ stroke = f"url(#{border.get_id()})"
25
+ stroke_opacity = 1
26
+ else:
27
+ stroke = outline
28
+ stroke_opacity = outline_opacity
21
29
  drawing[1].add(
22
30
  drawing[1].rect(
23
31
  (x1, y1), (x2 - x1, y2 - y1), _rx, _ry,
24
- fill=fill, stroke_width=width,
25
- stroke=f"url(#{border.get_id()})",
32
+ fill=fill, fill_opacity=fill_opacity,
33
+ stroke=stroke, stroke_width=width, stroke_opacity=stroke_opacity,
34
+ transform="translate(0.500000 0.500000)"
26
35
  )
27
36
  )
28
37
  drawing[1].save()
@@ -32,18 +41,22 @@ class FluButtonDraw(DSvgDraw):
32
41
  class FluButtonCanvas(DCanvas):
33
42
  draw = FluButtonDraw
34
43
 
35
- def create_round_rectangle(self,
36
- x1, y1, x2, y2, r1, r2=None, temppath=None,
37
- fill="transparent", outline="black", outline2="black", width=1
38
- ):
39
- self._img = self.svgdraw.create_roundrect(
44
+ def create_round_rectangle_with_text(self,
45
+ x1, y1, x2, y2, r1, r2=None, temppath=None,
46
+ fill="transparent", fill_opacity=1,
47
+ outline="black", outline2="black", outline_opacity=1, outline2_opacity=1,
48
+ width=1,
49
+ ):
50
+ self._img = self.svgdraw.create_roundrect_with_text(
40
51
  x1, y1, x2, y2, r1, r2, temppath=temppath,
41
- fill=fill, outline=outline, outline2=outline2, width=width
52
+ fill=fill, fill_opacity=fill_opacity,
53
+ outline=outline, outline2=outline2, outline_opacity=outline_opacity, outline2_opacity=outline2_opacity,
54
+ width=width,
42
55
  )
43
56
  self._tkimg = self.svgdraw.create_tksvg_image(self._img)
44
57
  return self.create_image(x1, y1, anchor="nw", image=self._tkimg)
45
58
 
46
- create_roundrect = create_round_rectangle
59
+ create_roundrect = create_round_rectangle_with_text
47
60
 
48
61
 
49
62
  class FluButton(FluButtonCanvas, DDrawWidget):
@@ -55,6 +68,7 @@ class FluButton(FluButtonCanvas, DDrawWidget):
55
68
  font=None,
56
69
  mode="light",
57
70
  style="standard",
71
+ state="normal",
58
72
  **kwargs):
59
73
  self._init(mode, style)
60
74
 
@@ -67,7 +81,8 @@ class FluButton(FluButtonCanvas, DDrawWidget):
67
81
 
68
82
  self.dconfigure(
69
83
  text=text,
70
- command=command
84
+ command=command,
85
+ state=state,
71
86
  )
72
87
 
73
88
  self.bind("<<Clicked>>", lambda event=None: self.focus_set(), add="+")
@@ -88,31 +103,12 @@ class FluButton(FluButtonCanvas, DDrawWidget):
88
103
  "text": "",
89
104
  "command": None,
90
105
  "font": None,
106
+ "state": "normal",
91
107
 
92
- "rest": {
93
- "back_color": "#ffffff",
94
- "border_color": "#f0f0f0",
95
- "border_color2": "#d6d6d6",
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
- }
108
+ "rest": {},
109
+ "hover": {},
110
+ "pressed": {},
111
+ "disabled": {}
116
112
  }
117
113
  )
118
114
 
@@ -121,35 +117,44 @@ class FluButton(FluButtonCanvas, DDrawWidget):
121
117
  def _draw(self, event=None):
122
118
  super()._draw(event)
123
119
 
120
+ width = self.winfo_width()
121
+ height = self.winfo_height()
122
+
124
123
  self.delete("all")
125
124
 
126
- if self.enter:
127
- if self.button1:
128
- _back_color = self.attributes.pressed.back_color
129
- _border_color = self.attributes.pressed.border_color
130
- _border_color2 = self.attributes.pressed.border_color2
131
- _border_width = self.attributes.pressed.border_width
132
- _radius = self.attributes.pressed.radius
133
- _text_color = self.attributes.pressed.text_color
125
+ state = self.dcget("state")
126
+
127
+ _dict = None
128
+
129
+ if state == "normal":
130
+ if self.enter:
131
+ if self.button1:
132
+ _dict = self.attributes.pressed
133
+ else:
134
+ _dict = self.attributes.hover
134
135
  else:
135
- _back_color = self.attributes.hover.back_color
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
136
+ _dict = self.attributes.rest
141
137
  else:
142
- _back_color = self.attributes.rest.back_color
143
- _border_color = self.attributes.rest.border_color
144
- _border_color2 = self.attributes.rest.border_color2
145
- _border_width = self.attributes.rest.border_width
146
- _radius = self.attributes.rest.radius
147
- _text_color = self.attributes.rest.text_color
148
-
149
- self.element_border = self.create_round_rectangle(
150
- 0, 0, self.winfo_width(), self.winfo_height(), _radius, temppath=self.temppath,
151
- fill=_back_color, outline=_border_color, outline2=_border_color2, width=_border_width
138
+ _dict = self.attributes.disabled
139
+
140
+ _back_color = _dict.back_color
141
+ _back_opacity = _dict.back_opacity
142
+ _border_color = _dict.border_color
143
+ _border_color_opacity = _dict.border_color_opacity
144
+ _border_color2 = _dict.border_color2
145
+ _border_color2_opacity = _dict.border_color2_opacity
146
+ _border_width = _dict.border_width
147
+ _radius = _dict.radius
148
+ _text_color = _dict.text_color
149
+
150
+ self.element_border = self.create_round_rectangle_with_text(
151
+ 0, 0, width, height, _radius, temppath=self.temppath,
152
+ fill=_back_color, fill_opacity=_back_opacity,
153
+ outline=_border_color, outline_opacity=_border_color_opacity, outline2=_border_color2,
154
+ outline2_opacity=_border_color2_opacity,
155
+ width=_border_width,
152
156
  )
157
+
153
158
  self.element_text = self.create_text(
154
159
  self.winfo_width() / 2, self.winfo_height() / 2, anchor="center",
155
160
  fill=_text_color, text=self.attributes.text, font=self.attributes.font
@@ -179,27 +184,47 @@ class FluButton(FluButtonCanvas, DDrawWidget):
179
184
  self.dconfigure(
180
185
  rest={
181
186
  "back_color": "#ffffff",
182
- "border_color": "#e5e5e5",
183
- "border_color2": "#cccccc",
187
+ "back_opacity": "0.7",
188
+ "border_color": "#000000",
189
+ "border_color_opacity": "0.2",
190
+ "border_color2": "#000000",
191
+ "border_color2_opacity": "0.3",
184
192
  "border_width": 1,
185
193
  "radius": 6,
186
- "text_color": "#1b1b1b",
194
+ "text_color": "#000000",
187
195
  },
188
196
  hover={
189
- "back_color": "#fcfcfc",
190
- "border_color": "#e5e5e5",
191
- "border_color2": "#cccccc",
197
+ "back_color": "#F9F9F9",
198
+ "back_opacity": "0.5",
199
+ "border_color": "#000000",
200
+ "border_color_opacity": "0.1",
201
+ "border_color2": "#000000",
202
+ "border_color2_opacity": "0.2",
192
203
  "border_width": 1,
193
204
  "radius": 6,
194
- "text_color": "#1b1b1b",
205
+ "text_color": "#000000",
195
206
  },
196
207
  pressed={
197
- "back_color": "#fdfdfd",
198
- "border_color": "#e5e5e5",
199
- "border_color2": "#e5e5e5",
208
+ "back_color": "#F9F9F9",
209
+ "back_opacity": "0.3",
210
+ "border_color": "#000000",
211
+ "border_color_opacity": "0.1",
212
+ "border_color2": None,
213
+ "border_color2_opacity": None,
200
214
  "border_width": 1,
201
215
  "radius": 6,
202
216
  "text_color": "#636363",
217
+ },
218
+ disabled={
219
+ "back_color": "#ffffff",
220
+ "back_opacity": "1.000000",
221
+ "border_color": "#000000",
222
+ "border_color_opacity": "0.058824",
223
+ "border_color2": "#000000",
224
+ "border_color2_opacity": "0.160784",
225
+ "border_width": 1,
226
+ "radius": 6,
227
+ "text_color": "#a2a2a2",
203
228
  }
204
229
  )
205
230
 
@@ -207,141 +232,251 @@ class FluButton(FluButtonCanvas, DDrawWidget):
207
232
  self.dconfigure(
208
233
  rest={
209
234
  "back_color": "#ffffff",
210
- "border_color": "white",
211
- "border_color2": "white",
235
+ "back_opacity": "0.7",
236
+ "border_color": "#000000",
237
+ "border_color_opacity": "0.2",
238
+ "border_color2": "#000000",
239
+ "border_color2_opacity": "0.3",
212
240
  "border_width": 0,
213
241
  "radius": 6,
214
- "text_color": "#1b1b1b",
242
+ "text_color": "#000000",
215
243
  },
216
244
  hover={
217
- "back_color": "#eaeaea",
218
- "border_color": "#f0f0f0",
219
- "border_color2": "#d6d6d6",
245
+ "back_color": "#F9F9F9",
246
+ "back_opacity": "0.5",
247
+ "border_color": "#000000",
248
+ "border_color_opacity": "0.1",
249
+ "border_color2": "#000000",
250
+ "border_color2_opacity": "0.2",
220
251
  "border_width": 0,
221
252
  "radius": 6,
222
- "text_color": "#1b1b1b",
253
+ "text_color": "#000000",
223
254
  },
224
255
  pressed={
225
- "back_color": "#ededed",
226
- "border_color": "#f0f0f0",
227
- "border_color2": "#f0f0f0",
256
+ "back_color": "#F9F9F9",
257
+ "back_opacity": "0.3",
258
+ "border_color": "#000000",
259
+ "border_color_opacity": "0.1",
260
+ "border_color2": None,
261
+ "border_color2_opacity": None,
228
262
  "border_width": 0,
229
263
  "radius": 6,
230
264
  "text_color": "#636363",
265
+ },
266
+ disabled={
267
+ "back_color": "#ffffff",
268
+ "back_opacity": "1.000000",
269
+ "border_color": "#000000",
270
+ "border_color_opacity": "0.058824",
271
+ "border_color2": "#000000",
272
+ "border_color2_opacity": "0.160784",
273
+ "border_width": 0,
274
+ "radius": 6,
275
+ "text_color": "#a2a2a2",
231
276
  }
232
277
  )
233
278
 
234
279
  def _light_accent(self):
235
280
  self.dconfigure(
236
281
  rest={
237
- "back_color": "#005fb8",
238
- "border_color": "#146cbe",
239
- "border_color2": "#00396e",
282
+ "back_color": "#005FB8",
283
+ "back_opacity": "1",
284
+ "border_color": "#FFFFFF",
285
+ "border_color_opacity": "0.08",
286
+ "border_color2": "#000000",
287
+ "border_color2_opacity": "0.4",
240
288
  "border_width": 1,
241
289
  "radius": 6,
242
290
  "text_color": "#ffffff",
243
291
  },
244
292
  hover={
245
- "back_color": "#0359a9",
246
- "border_color": "#1766b0",
247
- "border_color2": "#0f4373",
293
+ "back_color": "#005FB8",
294
+ "back_opacity": "0.9",
295
+ "border_color": "#FFFFFF",
296
+ "border_color_opacity": "0.08",
297
+ "border_color2": "#000000",
298
+ "border_color2_opacity": "0.4",
248
299
  "border_width": 1,
249
300
  "radius": 6,
250
301
  "text_color": "#ffffff",
251
302
  },
252
303
  pressed={
253
- "back_color": "#005fb8",
254
- "border_color": "#4389ca",
255
- "border_color2": "#4389ca",
304
+ "back_color": "#005FB8",
305
+ "back_opacity": "0.8",
306
+ "border_color": "#FFFFFF",
307
+ "border_color_opacity": "0.08",
308
+ "border_color2": "#FFFFFF",
309
+ "border_color2_opacity": "0.08",
256
310
  "border_width": 1,
257
311
  "radius": 6,
258
- "text_color": "#b4cbe0",
312
+ "text_color": "#c2d9ee",
313
+ },
314
+ disabled={
315
+ "back_color": "#000000",
316
+ "back_opacity": "0.22",
317
+ "border_color": "#FFFFFF",
318
+ "border_color_opacity": "1",
319
+ "border_color2": "#FFFFFF",
320
+ "border_color2_opacity": "1",
321
+ "border_width": 0,
322
+ "radius": 6,
323
+ "text_color": "#f3f3f3",
259
324
  }
260
325
  )
261
326
 
262
327
  def _dark(self):
263
328
  self.dconfigure(
264
329
  rest={
265
- "back_color": "#272727",
266
- "border_color": "#303030",
267
- "border_color2": "#262626",
330
+ "back_color": "#FFFFFF",
331
+ "back_opacity": "0.06",
332
+ "border_color": "#FFFFFF",
333
+ "border_color_opacity": "0.09",
334
+ "border_color2": "#FFFFFF",
335
+ "border_color2_opacity": "0.07",
268
336
  "border_width": 1,
269
337
  "radius": 6,
270
- "text_color": "#ffffff",
338
+ "text_color": "#FFFFFF",
271
339
  },
272
340
  hover={
273
- "back_color": "#2d2d2d",
274
- "border_color": "#303030",
275
- "border_color2": "#262626",
341
+ "back_color": "#FFFFFF",
342
+ "back_opacity": "0.08",
343
+ "border_color": "#FFFFFF",
344
+ "border_color_opacity": "0.09",
345
+ "border_color2": "#FFFFFF",
346
+ "border_color2_opacity": "0.07",
276
347
  "border_width": 1,
277
348
  "radius": 6,
278
- "text_color": "#ffffff",
349
+ "text_color": "#FFFFFF",
279
350
  },
280
351
  pressed={
281
- "back_color": "#212121",
282
- "border_color": "#2a2a2a",
283
- "border_color2": "#262626",
352
+ "back_color": "#FFFFFF",
353
+ "back_opacity": "0.03",
354
+ "border_color": "#FFFFFF",
355
+ "border_color_opacity": "0.07",
356
+ "border_color2": None,
357
+ "border_color2_opacity": None,
358
+ "border_width": 1,
359
+ "radius": 6,
360
+ "text_color": "#7D7D7D",
361
+ },
362
+ disabled={
363
+ "back_color": "#FFFFFF",
364
+ "back_opacity": "0.04",
365
+ "border_color": "#FFFFFF",
366
+ "border_color_opacity": "0.07",
367
+ "border_color2": None,
368
+ "border_color2_opacity": None,
284
369
  "border_width": 1,
285
370
  "radius": 6,
286
- "text_color": "#cfcfcf",
371
+ "text_color": "#a2a2a2",
287
372
  }
288
373
  )
289
374
 
290
375
  def _dark_menu(self):
291
376
  self.dconfigure(
292
377
  rest={
293
- "back_color": "#202020",
294
- "border_color": "black",
295
- "border_color2": "black",
378
+ "back_color": "#FFFFFF",
379
+ "back_opacity": "0",
380
+ "border_color": "#FFFFFF",
381
+ "border_color_opacity": "0",
382
+ "border_color2": "#FFFFFF",
383
+ "border_color2_opacity": "0",
296
384
  "border_width": 0,
297
385
  "radius": 6,
298
- "text_color": "#ffffff",
386
+ "text_color": "#FFFFFF",
299
387
  },
300
388
  hover={
301
- "back_color": "#2d2d2d",
302
- "border_color": "#303030",
303
- "border_color2": "#262626",
389
+ "back_color": "#FFFFFF",
390
+ "back_opacity": "0.04",
391
+ "border_color": "#FFFFFF",
392
+ "border_color_opacity": "0.045",
393
+ "border_color2": "#FFFFFF",
394
+ "border_color2_opacity": "0.07",
304
395
  "border_width": 0,
305
396
  "radius": 6,
306
- "text_color": "#ffffff",
397
+ "text_color": "#FFFFFF",
307
398
  },
308
399
  pressed={
309
- "back_color": "#292929",
310
- "border_color": "#2a2a2a",
311
- "border_color2": "#262626",
400
+ "back_color": "#FFFFFF",
401
+ "back_opacity": "0.015",
402
+ "border_color": "#FFFFFF",
403
+ "border_color_opacity": "0.035",
404
+ "border_color2": None,
405
+ "border_color2_opacity": None,
312
406
  "border_width": 0,
313
407
  "radius": 6,
314
- "text_color": "#cfcfcf",
408
+ "text_color": "#7D7D7D",
409
+ },
410
+ disabled={
411
+ "back_color": "#FFFFFF",
412
+ "back_opacity": "0",
413
+ "border_color": "#FFFFFF",
414
+ "border_color_opacity": "0",
415
+ "border_color2": None,
416
+ "border_color2_opacity": None,
417
+ "border_width": 0,
418
+ "radius": 6,
419
+ "text_color": "#a2a2a2",
315
420
  }
316
421
  )
317
422
 
318
423
  def _dark_accent(self):
319
424
  self.dconfigure(
320
425
  rest={
321
- "back_color": "#60cdff",
322
- "border_color": "#6cd1ff",
323
- "border_color2": "#56b4df",
426
+ "back_color": "#60CDFF",
427
+ "back_opacity": "1",
428
+ "border_color": "#FFFFFF",
429
+ "border_color_opacity": "0.08",
430
+ "border_color2": "#000000",
431
+ "border_color2_opacity": "0.14",
324
432
  "border_width": 1,
325
433
  "radius": 6,
326
434
  "text_color": "#000000",
327
435
  },
328
436
  hover={
329
- "back_color": "#5abce9",
330
- "border_color": "#67c1eb",
331
- "border_color2": "#50a5cc",
437
+ "back_color": "#60CDFF",
438
+ "back_opacity": "0.9",
439
+ "border_color": "#FFFFFF",
440
+ "border_color_opacity": "0.08",
441
+ "border_color2": "#000000",
442
+ "border_color2_opacity": "0.14",
332
443
  "border_width": 1,
333
444
  "radius": 6,
334
445
  "text_color": "#000000",
335
446
  },
336
447
  pressed={
337
- "back_color": "#52a9d1",
338
- "border_color": "#60b0d5",
339
- "border_color2": "#60b0d5",
448
+ "back_color": "#60CDFF",
449
+ "back_opacity": "0.8",
450
+ "border_color": "#FFFFFF",
451
+ "border_color_opacity": "0.08",
452
+ "border_color2": None,
453
+ "border_color2_opacity": None,
454
+ "border_width": 1,
455
+ "radius": 6,
456
+ "text_color": "#295569",
457
+ },
458
+ disabled={
459
+ "back_color": "#FFFFFF",
460
+ "back_opacity": "0.16",
461
+ "border_color": "#FFFFFF",
462
+ "border_color_opacity": "0.16",
463
+ "border_color2": None,
464
+ "border_color2_opacity": None,
340
465
  "border_width": 1,
341
466
  "radius": 6,
342
- "text_color": "#295468",
467
+ "text_color": "#a7a7a7",
343
468
  }
344
469
  )
345
470
 
346
471
  def invoke(self):
347
472
  self.attributes.command()
473
+
474
+ def _event_off_button1(self, event=None):
475
+ self.button1 = False
476
+
477
+ self._draw(event)
478
+
479
+ if self.enter:
480
+ # self.focus_set()
481
+ if self.dcget("state") == "normal":
482
+ self.event_generate("<<Clicked>>")
tkflu/bwm.py CHANGED
@@ -44,6 +44,12 @@ class BWm(object):
44
44
  )
45
45
  self.closebutton._draw()
46
46
 
47
+ def _event_key_esc(self, event=None):
48
+ self._event_delete_window()
49
+
50
+ def _event_delete_window(self):
51
+ self.destroy()
52
+
47
53
  def _event_configure(self, event=None):
48
54
 
49
55
  """
@@ -71,9 +77,6 @@ class BWm(object):
71
77
 
72
78
  self.theme(mode)
73
79
 
74
- def _exit(self):
75
- self.quit()
76
-
77
80
  def theme(self, mode: str):
78
81
 
79
82
  """
@@ -139,7 +142,7 @@ class BWm(object):
139
142
  self.titlebar = Frame(self, width=180, height=35, background=self.attributes.back_color)
140
143
  self.titlelabel = FluLabel(self.titlebar, text=self.title(), width=50)
141
144
  self.titlelabel.pack(fill="y", side="left")
142
- self.closebutton = FluButton(self.titlebar, text="", width=32, height=32, command=lambda: self._exit())
145
+ self.closebutton = FluButton(self.titlebar, text="", width=32, height=32, command=lambda: self._event_delete_window())
143
146
  self.closebutton.pack(fill="y", side="right")
144
147
  self.titlebar.pack(fill="x", side="top")
145
148