From c6b5f40b70c9e64eec0dea3f1a0387430449ec6f Mon Sep 17 00:00:00 2001 From: vadzik Date: Fri, 23 Feb 2024 12:39:13 +0300 Subject: [PATCH] [ADD] Added new button and fixes linux drives --- app/__init__.py | 45 ++++++++++++++++++++++++++++----------------- app/utils_drive.py | 5 ++++- req.txt | Bin 140 -> 246 bytes 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 3d87b80..9ce8168 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -19,10 +19,11 @@ class App: self.root = Tk() self.root.title("Disk Eraser") - self.root.geometry("400x300") - self.root.minsize(400, 300) + self.root.geometry("700x300") + self.root.minsize(700, 300) self.__load_menus() self.__init_table() + self.__update_drives() self.root.mainloop() def __load_menus(self): @@ -37,11 +38,21 @@ class App: self.root.config(menu=main_menu) bottom_frame = ttk.Frame(borderwidth=1, relief=SOLID, padding=[3, 5]) - erase_button = ttk.Button(bottom_frame, text="Стереть диск", command=self.__erase_drive) - erase_button.pack(side=RIGHT) + self.erase_button = ttk.Button(bottom_frame, text="Стереть диск", command=self.__erase_drive) + self.erase_button.pack(side=RIGHT) + + update_button = ttk.Button(bottom_frame, text="Обновить", command=self.__update_drives) + update_button.pack(side=RIGHT, padx=5) + bottom_frame.pack(side=BOTTOM, fill=X) - + + def __update_drives(self): + self.drive_tree.delete(*self.drive_tree.get_children()) + self.__load_drives() + for drive in self.drives: + self.drive_tree.insert("", END, values=(drive.index, drive.name, drive.disk_type, self.__human_size(drive.capacity), drive.serial_num)) + def __load_drives(self): if self.OS_TYPE == "Windows": @@ -50,39 +61,37 @@ class App: self.drives = [] if disks := c.Win32_DiskDrive(): for disk in disks: - self.drives.append(Drive(disk.Model, disk.Name, disk.InterfaceType, disk.DefaultBlockSize, int(disk.Size), disk.SerialNumber)) + self.drives.append(Drive(disk.Model, disk.Name, disk.InterfaceType, disk.DefaultBlockSize, int(disk.Size), disk.SerialNumber, disk.Index)) elif self.OS_TYPE == "Linux": from diskinfo import Disk, DiskInfo di = DiskInfo() disks = di.get_disk_list(sorting=True) self.drives = [] for disk in disks: - self.drives.append(Drive(disk.get_model(), disk.get_path(), disk.get_type_str(), disk.get_logical_block_size(), int(disk.get_size()*512), disk.get_serial_number())) + if "zram" not in disk.get_path(): + self.drives.append(Drive(disk.get_model(), disk.get_path(), disk.get_type_str(), disk.get_logical_block_size(), int(disk.get_size()*512), disk.get_serial_number(), disk.get_device_id())) def __init_table(self): - self.__load_drives() - # определяем столбцы - columns = ("name", "type", "capacity", "serial_num") + columns = ("index", "name", "type", "capacity", "serial_num") self.drive_tree = ttk.Treeview(columns=columns, show="headings", selectmode="browse") self.drive_tree.pack(fill=BOTH, expand=1, side=TOP) # определяем заголовки + self.drive_tree.heading("index", text="ID", anchor=W) self.drive_tree.heading("name", text="Имя", anchor=W) self.drive_tree.heading("type", text="Тип", anchor=W) self.drive_tree.heading("capacity", text="Объем", anchor=W) self.drive_tree.heading("serial_num", text="Серийный номер", anchor=W) - self.drive_tree.column("#1", stretch=YES, width=150, minwidth=120) - self.drive_tree.column("#2", stretch=NO, width=60, minwidth=60) + + self.drive_tree.column("#1", stretch=NO, width=60, minwidth=60) + self.drive_tree.column("#2", stretch=YES, width=150, minwidth=120) self.drive_tree.column("#3", stretch=NO, width=100, minwidth=100) self.drive_tree.column("#4", stretch=YES, width=150, minwidth=100) + self.drive_tree.column("#5", stretch=YES, width=150, minwidth=100) - # добавляем данные - for drive in self.drives: - self.drive_tree.insert("", END, values=(drive.name, drive.disk_type, self.__human_size(drive.capacity), drive.serial_num)) - self.drive_tree.bind("<>", self.__drive_selected) def __human_size(self, size): @@ -99,4 +108,6 @@ class App: print(self.selected) def __erase_drive(self): - print(self.selected) \ No newline at end of file + self.erase_button.configure(state='disabled') + print(self.selected) + self.erase_button.configure(state='active') \ No newline at end of file diff --git a/app/utils_drive.py b/app/utils_drive.py index 2546076..d43b3d1 100644 --- a/app/utils_drive.py +++ b/app/utils_drive.py @@ -1,5 +1,7 @@ class Drive(): + index: int = None + path: str total_sectors: str @@ -14,7 +16,7 @@ class Drive(): serial_num = None - def __init__(self, name , path, disk_type, block_size, capacity, dev_id): + def __init__(self, name , path, disk_type, block_size, capacity, dev_id, index): self.name = name self.disk_type = disk_type self.path = path @@ -22,6 +24,7 @@ class Drive(): self.block_size = block_size self.capacity = capacity self.serial_num = dev_id + self.index = index def erase(self): pass diff --git a/req.txt b/req.txt index 234ef277bee7267979415b3ffe284e00ecc688d3..f46eae8cc17e27c77ffa622a497026ee65276260 100644 GIT binary patch literal 246 zcmezWFNGnKp_m~XNaiu5G2}DY0-+Iu9)lqe8!=b|d90U}$;P!5#KV=!hg0?QjS O7%-Sk^w(zrNdo}jKns!p