Last change
on this file since 1300 was
1211,
checked in by sz, 21 months ago
|
linux compatibility (can't use the window state "zoomed", some state changes need wait_visibility())
|
File size:
2.1 KB
|
Line | |
---|
1 | from threading import Timer
|
---|
2 | import os
|
---|
3 |
|
---|
4 | class Swap:
|
---|
5 | def __init__(self, init = None) -> None:
|
---|
6 | self.init = init
|
---|
7 | self.clear()
|
---|
8 | self.select = False
|
---|
9 | self.empty = False
|
---|
10 |
|
---|
11 | def update(self, new):
|
---|
12 | if not new:
|
---|
13 | if self.empty == False:
|
---|
14 | self.empty = True
|
---|
15 | return
|
---|
16 | else:
|
---|
17 | self.empty = False
|
---|
18 |
|
---|
19 | if self.select:
|
---|
20 | self.one = new
|
---|
21 | else:
|
---|
22 | self.two = new
|
---|
23 | self.select = not self.select
|
---|
24 |
|
---|
25 | def get(self):
|
---|
26 | if self.select:
|
---|
27 | return self.two
|
---|
28 | else:
|
---|
29 | return self.one
|
---|
30 |
|
---|
31 | def clear(self):
|
---|
32 | self.one = self.init
|
---|
33 | self.two = self.init
|
---|
34 |
|
---|
35 |
|
---|
36 | #source: https://gist.github.com/walkermatt/2871026
|
---|
37 | def debounce(wait):
|
---|
38 | """ Decorator that will postpone a function's
|
---|
39 | execution until after wait seconds
|
---|
40 | have elapsed since the last time it was invoked. """
|
---|
41 | def decorator(fn):
|
---|
42 | def debounced(*args, **kwargs):
|
---|
43 | def call_it():
|
---|
44 | fn(*args, **kwargs)
|
---|
45 | try:
|
---|
46 | debounced.t.cancel()
|
---|
47 | except(AttributeError):
|
---|
48 | pass
|
---|
49 | debounced.t = Timer(wait, call_it)
|
---|
50 | debounced.t.start()
|
---|
51 | return debounced
|
---|
52 | return decorator
|
---|
53 |
|
---|
54 |
|
---|
55 | # https://stackoverflow.com/questions/39058038/wm-attributes-and-zoomed-doesnt-work
|
---|
56 | # https://stackoverflow.com/questions/18394597/is-there-a-way-to-create-transparent-windows-with-tkinter
|
---|
57 | def windowHideAndMaximize(wnd): # to get the size of working area on screen (screen minus taskbars, toolbars etc.) - make invisible maximized window
|
---|
58 | if os.name=='posix':
|
---|
59 | wnd.wait_visibility()
|
---|
60 | wnd.attributes("-alpha", 0)
|
---|
61 | if os.name=='posix':
|
---|
62 | wnd.attributes("-zoomed", 1)
|
---|
63 | else:
|
---|
64 | wnd.state('zoomed')
|
---|
65 | wnd.update()
|
---|
66 |
|
---|
67 | def windowShowAndSetGeometry(wnd, geometry):
|
---|
68 | if os.name=='posix':
|
---|
69 | wnd.attributes("-zoomed", 0)
|
---|
70 | wnd.wait_visibility()
|
---|
71 | else:
|
---|
72 | wnd.state('normal')
|
---|
73 | wnd.update()
|
---|
74 | wnd.geometry(geometry)
|
---|
75 | wnd.attributes("-alpha", 1)
|
---|
76 | wnd.update()
|
---|
Note: See
TracBrowser
for help on using the repository browser.