مضى على الشبكة و يوم من العطاء.
  • تحذير: يجب على كل روّاد الشبكة تشغيل برامج الاختراق داخل الأنظمة الوهمية وهي بهدف التعلم وحماية الأعضاء والتوعية بها

أداة مراقبة احداث الملفات في النظام باستخدام Python !

Dark-Base

>_ عضو متميز _<
.:: كاتب تقني ::.
>:: v1p ::<

السمعة:

السلام عليكم ورحمة الله وبركاته

أداة مراقبة أحداث الملفات في النظام باستخدام Python !

هذه أداة لمراقبة جميع الأحداث التي تحدث للملفات في النظام (ملفات النظام ضمنهم) سواء كان حذف , إنشاء , تعديل , نقل باستخدام لغة بايثون وبدون تعقيد.
المشروع قديم وأنا مو متذكره كويس وماالي نفس أرجع أراجعه كله من جديد وأشرحه وأنا وأتمنى تستفيدوا

🔸متطلبات الكود :

تثبيت مكتبة watchdog عبر أمر:
كود:
pip install watchdog

🔸الكود الأول للكونسول :

Python:
import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from getpass import getuser

class MonitorHandler(FileSystemEventHandler):
    def on_created(self, event):# عندما يتم انشاء ملف
        message = f"File created: {event.src_path}"
        print(message)
    
    def on_modified(self, event):# عندما يتم تعديل ملف
        message = f"File modified: {event.src_path}"
        print(message)
 
    def on_deleted(self, event):# عندما يتم حذف ملف
        message = f"File deleted: {event.src_path}"
        print(message)
 
    def on_moved(self, event):# عندما يتم نقل ملف
        message = f"File moved from {event.src_path} to {event.dest_path}"
        print(message)

def monitor_directory(path_to_monitor):
    if not os.path.exists(path_to_monitor):
        print(f"Directory '{path_to_monitor}' does not exist.")
        return

    event_handler = MonitorHandler()
    observer = Observer()
    observer.schedule(event_handler, path=path_to_monitor, recursive=True)
 
    print(f"Starting monitoring on: {path_to_monitor}")
    observer.start()
    time.sleep(0.5)  # وقت اختياري للتأكد ان (observer) جاهز للاستخدام
 
    # بدء المراقبة
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
        print("Monitoring stopped.")
 
    observer.join()

if __name__ == "__main__":
    directory_to_monitor = input("Enter The Target Path To Monitoring It :")"  # المسار المستهدف
    monitor_directory(directory_to_monitor) # بدء المراقبة

🔸الكود الثاني مع واجهة الرسومية :
اكتب المسار المراد مراقبته في حقل الإدخال ثم اضغط بدء المراقبة.

1729942039695.webp


Python:
import os
import time
from tkinter import *
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from threading import Thread

class MonitorHandler(FileSystemEventHandler):
    def __init__(self, table_object):
        super().__init__()
        self.table_object = table_object
        self.stop_event = False

    def on_created(self, event):
        self.log_event("تم انشاء ملف", event.src_path)

    def on_modified(self, event):
        self.log_event("تم تعديل ملف", event.src_path)

    def on_deleted(self, event):
        self.log_event("تم حذف ملف", event.src_path)

    def on_moved(self, event):
        self.log_event("تم نقل ملف", f"{event.src_path} to {event.dest_path}")

    def log_event(self, event_type, path):
        timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
        self.table_object.add_row([timestamp, event_type, path])

class TableObject:
    def __init__(self, master, background_color="#ffffff", font_color="#000000", border_frame_color="#000000" , fill=None, side=None, expand=False):
        self.master = master
        self.fill = fill
        self.side = side
        self.expand = expand
        self.background_color = background_color
        self.font_color = font_color
        self.border_frame_color = border_frame_color

        self.BorderFrame = Frame(master=self.master, bg=border_frame_color)
        self.BorderFrame.pack(pady=1, padx=1, fill=self.fill, side=self.side, expand=self.expand)

        self.TableComponentsFrame = Frame(master=self.BorderFrame, bg=self.background_color)
        self.TableComponentsFrame.pack(padx=1, pady=1, fill=self.fill, expand=self.expand)

        self.TableHeaderFrame = Frame(master=self.TableComponentsFrame, bg=self.background_color)
        self.TableHeaderFrame.pack(side=TOP, fill=X, padx=1, pady=1)

        self.table_parts = [("الوقت",25), ("الحدث", 20), ("المسار", 40)]

        for column_of_the_part, (header_text, width) in enumerate(self.table_parts):
            header_label = Label(self.TableHeaderFrame, text=header_text, bg=self.background_color,
                                 fg=self.font_color, font=(None , 14 ) ,  width=width-5, anchor="w", padx=5)
            header_label.grid(row=0, column=column_of_the_part, sticky="nsew", padx=(5, 0))

        self.scrollbar = Scrollbar(self.TableComponentsFrame, orient=VERTICAL)
        self.TableListBox = Listbox(master=self.TableComponentsFrame , bg=self.background_color , fg=self.font_color , yscrollcommand=self.scrollbar.set,
                                    selectbackground="#cce5ff", selectmode=SINGLE, height=15, width=80, font=("Courier", 10))
        self.scrollbar.config(command=self.TableListBox.yview)

        self.TableListBox.pack(side=LEFT, fill=BOTH, expand=True)
        self.scrollbar.pack(side=RIGHT, fill=Y)

        self.TableListBox.bind("<Button-3>", self.show_context_menu)
        self.context_menu = Menu(self.TableListBox, tearoff=0)
        self.context_menu.add_command(label="Copy", command=self.copy_selected_line)
        self.context_menu.add_command(label="Copy All", command=self.copy_all_lines)

    def add_row(self, row_data):
        formatted_row = ""
        for column_of_the_part, (data, (header, width)) in enumerate(zip(row_data, self.table_parts)):
            formatted_row += f"{data:<{width}}"

        self.TableListBox.insert(END, formatted_row)

    def show(self):
        self.BorderFrame.pack(pady=1 , padx=1, fill=self.fill, side=self.side, expand=self.expand)

    def hide(self):
        self.BorderFrame.pack_forget()

    def clear_table(self):
        self.TableListBox.delete(0, END)

    def show_context_menu(self, event):
        try:
            self.TableListBox.selection_clear(0, END)
            self.TableListBox.selection_set(self.TableListBox.nearest(event.y))
            self.context_menu.tk_popup(event.x_root, event.y_root)
        finally:
            self.context_menu.grab_release()

    def copy_selected_line(self):
        try:
            selected_line = self.TableListBox.get(self.TableListBox.curselection())
            self.master.clipboard_clear()
            self.master.clipboard_append(selected_line)
        except TclError:
            pass
    def copy_all_lines(self):
        try:
            self.master.clipboard_clear()
            for line in self.TableListBox.get(0,END):
                self.master.clipboard_append(line+"\n")
        except TclError:
            pass
 
def monitor_directory(path_to_monitor, table_object):
    if not os.path.exists(path_to_monitor):
        print(f"Directory '{path_to_monitor}' does not exist.")
        return

    event_handler = MonitorHandler(table_object)
    observer = Observer()
    observer.schedule(event_handler, path=path_to_monitor, recursive=True)

    print(f"Starting monitoring on: {path_to_monitor}")
    observer.start()
    time.sleep(0.5)

    try:
        while not table_object.stop_event:
            time.sleep(0.5)
            if table_object.stop_event:
                observer.stop()
                break
        observer.stop()
        print("stoped")
        if table_object.stop_event :
            return
    except KeyboardInterrupt:
        observer.stop()
        print("Monitoring stopped.")
        return # exit
 
    observer.join()

background_color = "#00194d"

root = Tk()
root.title("برنامج مراقبة الملفات")
root.geometry("700x400")
root["bg"] = background_color

my_events_table = TableObject(master=root, expand=True, fill=BOTH ,background_color=background_color , font_color="#f1f1f1")
my_events_table.show()

controling_frame = Frame(master=root , bg=background_color)
controling_frame.pack(side=BOTTOM , fill=X)

path_entry = Entry(master=controling_frame , font=(None,12))
def start_monitoring():
    my_events_table.stop_event = True
    time.sleep(0.6)
    monitor_thread = Thread(target=monitor_directory, args=(path_entry.get(), my_events_table), daemon=True)
    my_events_table.stop_event = False
    monitor_thread.start()
    my_events_table.TableListBox.delete(0,END)
 
start_monitoring_button = Button(master=controling_frame , text="  بدء المراقبة  " , font=(None,14) , border=1  , fg="#ffffff" , bg="#0497c2" , activebackground="#004097" , activeforeground="#ffffff" , command=start_monitoring)

start_monitoring_button.pack(side=LEFT , pady=10 , padx=20)
path_entry.pack(side=BOTTOM , fill=X , padx=10 , pady=20)

root.mainloop()

السلام عليكم ورحمة الله وبركاته
 
التعديل الأخير بواسطة المشرف:
أداة مراقبة احداث الملفات في النظام باستخدام Python !
السلام عليكم ,
هذه اداة لمراقبة جميع الاحداث التي تحدث للملفات في النظام(ملفات النظام ضمنهم) سواء كان حذف , انشاء , تعديل , نقل باستخدام لغة بايثون وبدون تعقيد ,
المشروع قديم وانا مو متذكره كويس وماالي نفس ارجع اراجعه كله من جديد واشرحه وانا واتمنى تستفيدو

متطلبات الكود :
تثبيت مكتبة watchdog عبر امر
كود:
pip install watchdog

الكود الاول للكونسول :
Python:
import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from getpass import getuser

class MonitorHandler(FileSystemEventHandler):
    def on_created(self, event):# عندما يتم انشاء ملف
        message = f"File created: {event.src_path}"
        print(message)
    
    def on_modified(self, event):# عندما يتم تعديل ملف
        message = f"File modified: {event.src_path}"
        print(message)
 
    def on_deleted(self, event):# عندما يتم حذف ملف
        message = f"File deleted: {event.src_path}"
        print(message)
 
    def on_moved(self, event):# عندما يتم نقل ملف
        message = f"File moved from {event.src_path} to {event.dest_path}"
        print(message)

def monitor_directory(path_to_monitor):
    if not os.path.exists(path_to_monitor):
        print(f"Directory '{path_to_monitor}' does not exist.")
        return

    event_handler = MonitorHandler()
    observer = Observer()
    observer.schedule(event_handler, path=path_to_monitor, recursive=True)
 
    print(f"Starting monitoring on: {path_to_monitor}")
    observer.start()
    time.sleep(0.5)  # وقت اختياري للتأكد ان (observer) جاهز للاستخدام
 
    # بدء المراقبة
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
        print("Monitoring stopped.")
 
    observer.join()

if __name__ == "__main__":
    directory_to_monitor = input("Enter The Target Path To Monitoring It :")"  # المسار المستهدف
    monitor_directory(directory_to_monitor) # بدء المراقبة

الكود الثاني مع واجهة الرسومية :
اكتب المسار المراد مراقبته في حقل الادخال ثم اضغط بدء المراقبة
مشاهدة المرفق 14900

Python:
import os
import time
from tkinter import *
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from threading import Thread

class MonitorHandler(FileSystemEventHandler):
    def __init__(self, table_object):
        super().__init__()
        self.table_object = table_object
        self.stop_event = False

    def on_created(self, event):
        self.log_event("تم انشاء ملف", event.src_path)

    def on_modified(self, event):
        self.log_event("تم تعديل ملف", event.src_path)

    def on_deleted(self, event):
        self.log_event("تم حذف ملف", event.src_path)

    def on_moved(self, event):
        self.log_event("تم نقل ملف", f"{event.src_path} to {event.dest_path}")

    def log_event(self, event_type, path):
        timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
        self.table_object.add_row([timestamp, event_type, path])

class TableObject:
    def __init__(self, master, background_color="#ffffff", font_color="#000000", border_frame_color="#000000" , fill=None, side=None, expand=False):
        self.master = master
        self.fill = fill
        self.side = side
        self.expand = expand
        self.background_color = background_color
        self.font_color = font_color
        self.border_frame_color = border_frame_color

        self.BorderFrame = Frame(master=self.master, bg=border_frame_color)
        self.BorderFrame.pack(pady=1, padx=1, fill=self.fill, side=self.side, expand=self.expand)

        self.TableComponentsFrame = Frame(master=self.BorderFrame, bg=self.background_color)
        self.TableComponentsFrame.pack(padx=1, pady=1, fill=self.fill, expand=self.expand)

        self.TableHeaderFrame = Frame(master=self.TableComponentsFrame, bg=self.background_color)
        self.TableHeaderFrame.pack(side=TOP, fill=X, padx=1, pady=1)

        self.table_parts = [("الوقت",25), ("الحدث", 20), ("المسار", 40)]

        for column_of_the_part, (header_text, width) in enumerate(self.table_parts):
            header_label = Label(self.TableHeaderFrame, text=header_text, bg=self.background_color,
                                 fg=self.font_color, font=(None , 14 ) ,  width=width-5, anchor="w", padx=5)
            header_label.grid(row=0, column=column_of_the_part, sticky="nsew", padx=(5, 0))

        self.scrollbar = Scrollbar(self.TableComponentsFrame, orient=VERTICAL)
        self.TableListBox = Listbox(master=self.TableComponentsFrame , bg=self.background_color , fg=self.font_color , yscrollcommand=self.scrollbar.set,
                                    selectbackground="#cce5ff", selectmode=SINGLE, height=15, width=80, font=("Courier", 10))
        self.scrollbar.config(command=self.TableListBox.yview)

        self.TableListBox.pack(side=LEFT, fill=BOTH, expand=True)
        self.scrollbar.pack(side=RIGHT, fill=Y)

        self.TableListBox.bind("<Button-3>", self.show_context_menu)
        self.context_menu = Menu(self.TableListBox, tearoff=0)
        self.context_menu.add_command(label="Copy", command=self.copy_selected_line)
        self.context_menu.add_command(label="Copy All", command=self.copy_all_lines)

    def add_row(self, row_data):
        formatted_row = ""
        for column_of_the_part, (data, (header, width)) in enumerate(zip(row_data, self.table_parts)):
            formatted_row += f"{data:<{width}}"

        self.TableListBox.insert(END, formatted_row)

    def show(self):
        self.BorderFrame.pack(pady=1 , padx=1, fill=self.fill, side=self.side, expand=self.expand)

    def hide(self):
        self.BorderFrame.pack_forget()

    def clear_table(self):
        self.TableListBox.delete(0, END)

    def show_context_menu(self, event):
        try:
            self.TableListBox.selection_clear(0, END)
            self.TableListBox.selection_set(self.TableListBox.nearest(event.y))
            self.context_menu.tk_popup(event.x_root, event.y_root)
        finally:
            self.context_menu.grab_release()

    def copy_selected_line(self):
        try:
            selected_line = self.TableListBox.get(self.TableListBox.curselection())
            self.master.clipboard_clear()
            self.master.clipboard_append(selected_line)
        except TclError:
            pass
    def copy_all_lines(self):
        try:
            self.master.clipboard_clear()
            for line in self.TableListBox.get(0,END):
                self.master.clipboard_append(line+"\n")
        except TclError:
            pass
 
def monitor_directory(path_to_monitor, table_object):
    if not os.path.exists(path_to_monitor):
        print(f"Directory '{path_to_monitor}' does not exist.")
        return

    event_handler = MonitorHandler(table_object)
    observer = Observer()
    observer.schedule(event_handler, path=path_to_monitor, recursive=True)

    print(f"Starting monitoring on: {path_to_monitor}")
    observer.start()
    time.sleep(0.5)

    try:
        while not table_object.stop_event:
            time.sleep(0.5)
            if table_object.stop_event:
                observer.stop()
                break
        observer.stop()
        print("stoped")
        if table_object.stop_event :
            return
    except KeyboardInterrupt:
        observer.stop()
        print("Monitoring stopped.")
        return # exit
 
    observer.join()

background_color = "#00194d"

root = Tk()
root.title("برنامج مراقبة الملفات")
root.geometry("700x400")
root["bg"] = background_color

my_events_table = TableObject(master=root, expand=True, fill=BOTH ,background_color=background_color , font_color="#f1f1f1")
my_events_table.show()

controling_frame = Frame(master=root , bg=background_color)
controling_frame.pack(side=BOTTOM , fill=X)

path_entry = Entry(master=controling_frame , font=(None,12))
def start_monitoring():
    my_events_table.stop_event = True
    time.sleep(0.6)
    monitor_thread = Thread(target=monitor_directory, args=(path_entry.get(), my_events_table), daemon=True)
    my_events_table.stop_event = False
    monitor_thread.start()
    my_events_table.TableListBox.delete(0,END)
 
start_monitoring_button = Button(master=controling_frame , text="  بدء المراقبة  " , font=(None,14) , border=1  , fg="#ffffff" , bg="#0497c2" , activebackground="#004097" , activeforeground="#ffffff" , command=start_monitoring)

start_monitoring_button.pack(side=LEFT , pady=10 , padx=20)
path_entry.pack(side=BOTTOM , fill=X , padx=10 , pady=20)

root.mainloop()


السلام عليكم ورحمته الله وبركاته
تشكر اخي على الكود افادني جدا
 
أداة مراقبة احداث الملفات في النظام باستخدام Python !
السلام عليكم ,
هذه اداة لمراقبة جميع الاحداث التي تحدث للملفات في النظام(ملفات النظام ضمنهم) سواء كان حذف , انشاء , تعديل , نقل باستخدام لغة بايثون وبدون تعقيد ,
المشروع قديم وانا مو متذكره كويس وماالي نفس ارجع اراجعه كله من جديد واشرحه وانا واتمنى تستفيدو

متطلبات الكود :
تثبيت مكتبة watchdog عبر امر
كود:
pip install watchdog

الكود الاول للكونسول :
Python:
import os
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from getpass import getuser

class MonitorHandler(FileSystemEventHandler):
    def on_created(self, event):# عندما يتم انشاء ملف
        message = f"File created: {event.src_path}"
        print(message)
    
    def on_modified(self, event):# عندما يتم تعديل ملف
        message = f"File modified: {event.src_path}"
        print(message)
 
    def on_deleted(self, event):# عندما يتم حذف ملف
        message = f"File deleted: {event.src_path}"
        print(message)
 
    def on_moved(self, event):# عندما يتم نقل ملف
        message = f"File moved from {event.src_path} to {event.dest_path}"
        print(message)

def monitor_directory(path_to_monitor):
    if not os.path.exists(path_to_monitor):
        print(f"Directory '{path_to_monitor}' does not exist.")
        return

    event_handler = MonitorHandler()
    observer = Observer()
    observer.schedule(event_handler, path=path_to_monitor, recursive=True)
 
    print(f"Starting monitoring on: {path_to_monitor}")
    observer.start()
    time.sleep(0.5)  # وقت اختياري للتأكد ان (observer) جاهز للاستخدام
 
    # بدء المراقبة
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
        print("Monitoring stopped.")
 
    observer.join()

if __name__ == "__main__":
    directory_to_monitor = input("Enter The Target Path To Monitoring It :")"  # المسار المستهدف
    monitor_directory(directory_to_monitor) # بدء المراقبة

الكود الثاني مع واجهة الرسومية :
اكتب المسار المراد مراقبته في حقل الادخال ثم اضغط بدء المراقبة
مشاهدة المرفق 14900

Python:
import os
import time
from tkinter import *
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from threading import Thread

class MonitorHandler(FileSystemEventHandler):
    def __init__(self, table_object):
        super().__init__()
        self.table_object = table_object
        self.stop_event = False

    def on_created(self, event):
        self.log_event("تم انشاء ملف", event.src_path)

    def on_modified(self, event):
        self.log_event("تم تعديل ملف", event.src_path)

    def on_deleted(self, event):
        self.log_event("تم حذف ملف", event.src_path)

    def on_moved(self, event):
        self.log_event("تم نقل ملف", f"{event.src_path} to {event.dest_path}")

    def log_event(self, event_type, path):
        timestamp = time.strftime("%Y-%m-%d %H:%M:%S")
        self.table_object.add_row([timestamp, event_type, path])

class TableObject:
    def __init__(self, master, background_color="#ffffff", font_color="#000000", border_frame_color="#000000" , fill=None, side=None, expand=False):
        self.master = master
        self.fill = fill
        self.side = side
        self.expand = expand
        self.background_color = background_color
        self.font_color = font_color
        self.border_frame_color = border_frame_color

        self.BorderFrame = Frame(master=self.master, bg=border_frame_color)
        self.BorderFrame.pack(pady=1, padx=1, fill=self.fill, side=self.side, expand=self.expand)

        self.TableComponentsFrame = Frame(master=self.BorderFrame, bg=self.background_color)
        self.TableComponentsFrame.pack(padx=1, pady=1, fill=self.fill, expand=self.expand)

        self.TableHeaderFrame = Frame(master=self.TableComponentsFrame, bg=self.background_color)
        self.TableHeaderFrame.pack(side=TOP, fill=X, padx=1, pady=1)

        self.table_parts = [("الوقت",25), ("الحدث", 20), ("المسار", 40)]

        for column_of_the_part, (header_text, width) in enumerate(self.table_parts):
            header_label = Label(self.TableHeaderFrame, text=header_text, bg=self.background_color,
                                 fg=self.font_color, font=(None , 14 ) ,  width=width-5, anchor="w", padx=5)
            header_label.grid(row=0, column=column_of_the_part, sticky="nsew", padx=(5, 0))

        self.scrollbar = Scrollbar(self.TableComponentsFrame, orient=VERTICAL)
        self.TableListBox = Listbox(master=self.TableComponentsFrame , bg=self.background_color , fg=self.font_color , yscrollcommand=self.scrollbar.set,
                                    selectbackground="#cce5ff", selectmode=SINGLE, height=15, width=80, font=("Courier", 10))
        self.scrollbar.config(command=self.TableListBox.yview)

        self.TableListBox.pack(side=LEFT, fill=BOTH, expand=True)
        self.scrollbar.pack(side=RIGHT, fill=Y)

        self.TableListBox.bind("<Button-3>", self.show_context_menu)
        self.context_menu = Menu(self.TableListBox, tearoff=0)
        self.context_menu.add_command(label="Copy", command=self.copy_selected_line)
        self.context_menu.add_command(label="Copy All", command=self.copy_all_lines)

    def add_row(self, row_data):
        formatted_row = ""
        for column_of_the_part, (data, (header, width)) in enumerate(zip(row_data, self.table_parts)):
            formatted_row += f"{data:<{width}}"

        self.TableListBox.insert(END, formatted_row)

    def show(self):
        self.BorderFrame.pack(pady=1 , padx=1, fill=self.fill, side=self.side, expand=self.expand)

    def hide(self):
        self.BorderFrame.pack_forget()

    def clear_table(self):
        self.TableListBox.delete(0, END)

    def show_context_menu(self, event):
        try:
            self.TableListBox.selection_clear(0, END)
            self.TableListBox.selection_set(self.TableListBox.nearest(event.y))
            self.context_menu.tk_popup(event.x_root, event.y_root)
        finally:
            self.context_menu.grab_release()

    def copy_selected_line(self):
        try:
            selected_line = self.TableListBox.get(self.TableListBox.curselection())
            self.master.clipboard_clear()
            self.master.clipboard_append(selected_line)
        except TclError:
            pass
    def copy_all_lines(self):
        try:
            self.master.clipboard_clear()
            for line in self.TableListBox.get(0,END):
                self.master.clipboard_append(line+"\n")
        except TclError:
            pass
 
def monitor_directory(path_to_monitor, table_object):
    if not os.path.exists(path_to_monitor):
        print(f"Directory '{path_to_monitor}' does not exist.")
        return

    event_handler = MonitorHandler(table_object)
    observer = Observer()
    observer.schedule(event_handler, path=path_to_monitor, recursive=True)

    print(f"Starting monitoring on: {path_to_monitor}")
    observer.start()
    time.sleep(0.5)

    try:
        while not table_object.stop_event:
            time.sleep(0.5)
            if table_object.stop_event:
                observer.stop()
                break
        observer.stop()
        print("stoped")
        if table_object.stop_event :
            return
    except KeyboardInterrupt:
        observer.stop()
        print("Monitoring stopped.")
        return # exit
 
    observer.join()

background_color = "#00194d"

root = Tk()
root.title("برنامج مراقبة الملفات")
root.geometry("700x400")
root["bg"] = background_color

my_events_table = TableObject(master=root, expand=True, fill=BOTH ,background_color=background_color , font_color="#f1f1f1")
my_events_table.show()

controling_frame = Frame(master=root , bg=background_color)
controling_frame.pack(side=BOTTOM , fill=X)

path_entry = Entry(master=controling_frame , font=(None,12))
def start_monitoring():
    my_events_table.stop_event = True
    time.sleep(0.6)
    monitor_thread = Thread(target=monitor_directory, args=(path_entry.get(), my_events_table), daemon=True)
    my_events_table.stop_event = False
    monitor_thread.start()
    my_events_table.TableListBox.delete(0,END)
 
start_monitoring_button = Button(master=controling_frame , text="  بدء المراقبة  " , font=(None,14) , border=1  , fg="#ffffff" , bg="#0497c2" , activebackground="#004097" , activeforeground="#ffffff" , command=start_monitoring)

start_monitoring_button.pack(side=LEFT , pady=10 , padx=20)
path_entry.pack(side=BOTTOM , fill=X , padx=10 , pady=20)

root.mainloop()


السلام عليكم ورحمته الله وبركاته
الله يعطيك ألف عافية دارك ❤️
 

آخر المشاركات

فانوس

رمضان
عودة
أعلى