Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import tkinter as tk
- from tkinter import messagebox, Label, Entry, Button, Checkbutton, IntVar
- import pygetwindow as gw
- def get_window_title(drive, folder_path):
- return f"{drive} - {folder_path}"
- def focus_or_open_folder(folder_path, drive):
- global j_window, n_window
- target_title = get_window_title(drive, folder_path)
- windows = gw.getWindowsWithTitle(target_title)
- if windows:
- windows[0].activate()
- else:
- os.startfile(folder_path)
- if drive == 'J':
- j_window = target_title
- elif drive == 'N':
- n_window = target_title
- def open_folder_j(folder_number, single_window_mode):
- if 1 <= folder_number <= 999:
- parent_dir = "001-999"
- else:
- parent_dir = f"{folder_number // 1000:02}000"
- folder_path = f"J:/{parent_dir}/{folder_number}"
- open_folder(folder_path, "J", single_window_mode)
- def open_folder_n(folder_number, single_window_mode):
- parent_num = folder_number // 1000 * 1000
- if folder_number % 1000 <= 249:
- sub_folder = "a"
- elif folder_number % 1000 <= 499:
- sub_folder = "b"
- elif folder_number % 1000 <= 749:
- sub_folder = "c"
- else:
- sub_folder = "d"
- folder_path = f"N:/Land Projects {parent_num}{sub_folder}/{folder_number}"
- open_folder(folder_path, "N", single_window_mode)
- def open_folder(folder_path, drive, single_window_mode):
- if single_window_mode:
- focus_or_open_folder(folder_path, drive)
- else:
- os.startfile(folder_path)
- def process_input(event=None):
- input_str = folder_input.get().strip().lower()
- parts = input_str.split()
- single_window_mode = single_window_var.get() == 1
- if len(parts) == 1 and parts[0].isdigit():
- folder_number = int(parts[0])
- open_folder_j(folder_number, single_window_mode)
- open_folder_n(folder_number, single_window_mode)
- elif len(parts) == 2 and parts[0] in ['j', 'n'] and parts[1].isdigit():
- folder_number = int(parts[1])
- if parts[0] == 'j':
- open_folder_j(folder_number, single_window_mode)
- elif parts[0] == 'n':
- open_folder_n(folder_number, single_window_mode)
- else:
- messagebox.showerror("Error", "Invalid input format. Use format 'Drive Letter Space FolderNumber'")
- def update_checkboxes():
- if single_window_var.get() == 1:
- multiple_windows_var.set(0)
- elif multiple_windows_var.get() == 1:
- single_window_var.set(0)
- if __name__ == "__main__":
- root = tk.Tk()
- root.title("Folder Opener")
- root.geometry("400x300")
- instruction_text = "Enter drive letter (j/n) followed by the folder number (e.g., j 22500). Typing just the folder number will open both."
- instruction_label = Label(root, text=instruction_text, wraplength=380, justify="left")
- instruction_label.pack(pady=(10,0))
- folder_input = Entry(root)
- folder_input.pack(pady=(5,5))
- folder_input.bind("<Return>", process_input)
- folder_input.focus_set()
- single_window_var = IntVar()
- single_window_check = Checkbutton(root, text="Two Single Windows", variable=single_window_var, command=update_checkboxes)
- single_window_check.pack()
- multiple_windows_var = IntVar()
- multiple_windows_check = Checkbutton(root, text="Multiple Windows", variable=multiple_windows_var, command=update_checkboxes)
- multiple_windows_check.pack()
- open_button = Button(root, text="Open Folder", command=process_input)
- open_button.pack(pady=(5,10))
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement