Skip to content

Commit 2eff4c4

Browse files
committed
Multi Monitor Screen Blocking
1 parent e597287 commit 2eff4c4

File tree

7 files changed

+28
-20
lines changed

7 files changed

+28
-20
lines changed

Frames/MobTimerController.py

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,50 @@
44
from Infrastructure.TimeOptionsManager import TimeOptionsManager
55
from Frames.ScreenBlockerFrame import ScreenBlockerFrame
66
from Frames.TransparentCountdownFrame import TransparentCountdownFrame
7+
from screeninfo import *
78

89

910
class MobTimerController(Tk):
1011
def __init__(self, *args, **kwargs):
1112
Tk.__init__(self, *args, **kwargs)
1213

13-
14-
14+
self.iconbitmap(default='C:\\Users\\Chris\\OneDrive\\Git\\Pycharm\\MobTimer\\time-bomb.ico')
1515
self.time_options_manager = TimeOptionsManager()
1616
self.mobber_manager = MobberManager()
1717
self.countdown_manager = CountdownManager(self)
1818

19-
self.containers = [self, Toplevel(self)]
19+
monitors = get_monitors()
20+
num_monitors = monitors.__len__()
21+
self.containers = [self]
22+
for monitor_index in range(1, num_monitors):
23+
monitor_screen_blocker = Toplevel(self)
24+
self.containers.append(monitor_screen_blocker)
2025
self.frame_types = (ScreenBlockerFrame, TransparentCountdownFrame)
2126
self.frames = {}
2227
for frame_type in self.frame_types:
23-
self.frames[frame_type] = []
24-
for s in self.containers:
25-
container = Frame(s)
26-
container.grid(row=0, column=0, sticky=N + S + E + W)
27-
container.grid_rowconfigure(0, weight=1)
28-
container.grid_columnconfigure(0, weight=1)
28+
self.frames[frame_type] = []
29+
for container in self.containers:
30+
container_frame = Frame(container)
31+
container_frame.grid(row=0, column=0, sticky=N + S + E + W)
32+
container_frame.grid_rowconfigure(0, weight=1)
33+
container_frame.grid_columnconfigure(0, weight=1)
2934
for frame_type in self.frame_types:
30-
frame_instance = frame_type(container, self, self.time_options_manager, self.mobber_manager, self.countdown_manager)
35+
frame_instance = frame_type(container_frame, self, self.time_options_manager, self.mobber_manager,
36+
self.countdown_manager)
3137
self.frames[frame_type].append(frame_instance)
3238
frame_instance.grid(row=0, column=0, sticky="nsew")
3339
self.last_frame = None
3440
self.show_screen_blocker_frame()
3541
for frame_instance in self.frames[TransparentCountdownFrame]:
3642
frame_instance.bind("<Enter>", self.toggle_transparent_frame_position)
3743
self.transparent_frame_position = 0
44+
self.title("Mob Timer")
3845

3946
def show_frame(self, frame_class):
4047
switched_frames = False
4148
if self.last_frame != frame_class:
4249
for frame_instances in self.frames[frame_class]:
43-
# for frame in frame_instances:
44-
frame_instances.tkraise()
50+
frame_instances.tkraise()
4551
switched_frames = True
4652
self.last_frame = frame_class
4753
return switched_frames
@@ -76,9 +82,11 @@ def set_full_screen_always_on_top(self):
7682
self.remove_title_bar()
7783
self.disable_resizing()
7884
top_left_screen = "+0+0"
79-
for container in self.containers:
80-
container.geometry(self.get_current_window_geometry())
81-
container.geometry(top_left_screen)
85+
monitors = get_monitors()
86+
87+
for container, monitor in zip(self.containers, monitors):
88+
monitor_string = "{}x{}+{}+{}".format(monitor.width, monitor.height, monitor.x, monitor.y)
89+
container.geometry(monitor_string)
8290
container.wait_visibility(container)
8391
container.attributes("-alpha", 1)
8492

Frames/ScreenBlockerFrame.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
from tkinter import *
22

3-
from Frames.MobFrame import MobFrame
4-
53

64
class ScreenBlockerFrame(Frame):
75
def __init__(self, master, controller, time_options_manager, mobber_manager, countdown_manager, **kwargs):

Frames/TransparentCountdownFrame.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
from tkinter import *
22

3-
from Frames.MobFrame import MobFrame
4-
53

64
class TransparentCountdownFrame(Frame):
75
def __init__(self, master, controller, time_options_manager, mobber_manager, countdown_manager, **kwargs):

MobTimer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from Frames.MobTimerController import MobTimerController
22
root = MobTimerController()
3+
34
root.mainloop()

setup.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,7 @@
33

44
sys.argv.append('py2exe')
55

6-
setup(windows=['MobTimer.py'], data_files=['C:\\Python34\\tcl\\tcl8.6\\init.tcl'])
6+
setup(windows=[{
7+
"script": 'MobTimer.py',
8+
"icon_resources": [(1, "time-bomb.ico")]
9+
}], data_files=['C:\\Python34\\tcl\\tcl8.6\\init.tcl'], requires=['screeninfo'])

time-bomb.ico

361 KB
Binary file not shown.

time-bomb.png

37.9 KB
Loading

0 commit comments

Comments
 (0)