[FIX] Added new way to identify drives
This commit is contained in:
parent
921ee3a201
commit
e56db30572
@ -17,11 +17,11 @@ class App:
|
|||||||
self.root.title("Disk Eraser")
|
self.root.title("Disk Eraser")
|
||||||
self.root.geometry("400x300")
|
self.root.geometry("400x300")
|
||||||
self.root.minsize(400, 300)
|
self.root.minsize(400, 300)
|
||||||
self.__load_menu()
|
self.__load_menus()
|
||||||
self.__init_table()
|
self.__init_table()
|
||||||
self.root.mainloop()
|
self.root.mainloop()
|
||||||
|
|
||||||
def __load_menu(self):
|
def __load_menus(self):
|
||||||
main_menu = Menu()
|
main_menu = Menu()
|
||||||
|
|
||||||
help_menu = Menu(tearoff=0)
|
help_menu = Menu(tearoff=0)
|
||||||
@ -30,12 +30,14 @@ class App:
|
|||||||
help_menu.add_command(label="О программе")
|
help_menu.add_command(label="О программе")
|
||||||
|
|
||||||
main_menu.add_cascade(label="Справка", menu=help_menu)
|
main_menu.add_cascade(label="Справка", menu=help_menu)
|
||||||
bottom_frame = ttk.Frame(borderwidth=1, relief=SOLID, padding=[3, 5])
|
|
||||||
erase_button = ttk.Button(bottom_frame, text="Стереть диск")
|
|
||||||
erase_button.pack(side=RIGHT)
|
|
||||||
bottom_frame.pack(side=BOTTOM, fill=X)
|
|
||||||
self.root.config(menu=main_menu)
|
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)
|
||||||
|
bottom_frame.pack(side=BOTTOM, fill=X)
|
||||||
|
|
||||||
|
|
||||||
def __load_drives(self):
|
def __load_drives(self):
|
||||||
|
|
||||||
if OS_TYPE == "Windows":
|
if OS_TYPE == "Windows":
|
||||||
@ -44,21 +46,21 @@ class App:
|
|||||||
self.drives = []
|
self.drives = []
|
||||||
if disks := c.Win32_DiskDrive():
|
if disks := c.Win32_DiskDrive():
|
||||||
for disk in disks:
|
for disk in disks:
|
||||||
self.drives.append(Drive(disk.Model, disk.Name, disk.InterfaceType, disk.DefaultBlockSize, int(disk.Size)))
|
self.drives.append(Drive(disk.Model, disk.Name, disk.InterfaceType, disk.DefaultBlockSize, int(disk.Size), disk.SerialNumber))
|
||||||
elif OS_TYPE == "Linux":
|
elif OS_TYPE == "Linux":
|
||||||
from diskinfo import Disk, DiskInfo
|
from diskinfo import Disk, DiskInfo
|
||||||
di = DiskInfo()
|
di = DiskInfo()
|
||||||
disks = di.get_disk_list(sorting=True)
|
disks = di.get_disk_list(sorting=True)
|
||||||
self.drives = []
|
self.drives = []
|
||||||
for d in disks:
|
for disk in disks:
|
||||||
self.drives.append(Drive(d.get_model(), d.get_path(), d.get_type_str(), d.get_logical_block_size(), int(d.get_size()*512)))
|
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()))
|
||||||
|
|
||||||
def __init_table(self):
|
def __init_table(self):
|
||||||
|
|
||||||
self.__load_drives()
|
self.__load_drives()
|
||||||
|
|
||||||
# определяем столбцы
|
# определяем столбцы
|
||||||
columns = ("name", "type", "capacity")
|
columns = ("name", "type", "capacity", "serial_num")
|
||||||
self.drive_tree = ttk.Treeview(columns=columns, show="headings", selectmode="browse")
|
self.drive_tree = ttk.Treeview(columns=columns, show="headings", selectmode="browse")
|
||||||
self.drive_tree.pack(fill=BOTH, expand=1, side=TOP)
|
self.drive_tree.pack(fill=BOTH, expand=1, side=TOP)
|
||||||
|
|
||||||
@ -66,14 +68,16 @@ class App:
|
|||||||
self.drive_tree.heading("name", text="Имя", anchor=W)
|
self.drive_tree.heading("name", text="Имя", anchor=W)
|
||||||
self.drive_tree.heading("type", text="Тип", anchor=W)
|
self.drive_tree.heading("type", text="Тип", anchor=W)
|
||||||
self.drive_tree.heading("capacity", 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("#1", stretch=YES, width=150, minwidth=120)
|
||||||
self.drive_tree.column("#2", stretch=NO, width=60, minwidth=60)
|
self.drive_tree.column("#2", stretch=NO, width=60, minwidth=60)
|
||||||
self.drive_tree.column("#3", stretch=NO, width=100, minwidth=100)
|
self.drive_tree.column("#3", stretch=NO, width=100, minwidth=100)
|
||||||
|
self.drive_tree.column("#4", stretch=YES, width=150, minwidth=100)
|
||||||
|
|
||||||
# добавляем данные
|
# добавляем данные
|
||||||
for drive in self.drives:
|
for drive in self.drives:
|
||||||
self.drive_tree.insert("", END, values=(drive.name, drive.disk_type, self.__human_size(drive.capacity)))
|
self.drive_tree.insert("", END, values=(drive.name, drive.disk_type, self.__human_size(drive.capacity), drive.serial_num))
|
||||||
|
|
||||||
self.drive_tree.bind("<<TreeviewSelect>>", self.__drive_selected)
|
self.drive_tree.bind("<<TreeviewSelect>>", self.__drive_selected)
|
||||||
|
|
||||||
@ -89,3 +93,6 @@ class App:
|
|||||||
item = self.drive_tree.item(selected_item)
|
item = self.drive_tree.item(selected_item)
|
||||||
self.selected = item["values"]
|
self.selected = item["values"]
|
||||||
print(self.selected)
|
print(self.selected)
|
||||||
|
|
||||||
|
def __erase_drive(self):
|
||||||
|
print(self.selected)
|
||||||
@ -12,15 +12,18 @@ class Drive():
|
|||||||
|
|
||||||
block_size: int = 512
|
block_size: int = 512
|
||||||
|
|
||||||
capacity: int
|
capacity: int
|
||||||
|
|
||||||
|
serial_num = None
|
||||||
|
|
||||||
def __init__(self, name , path, disk_type, block_size, capacity):
|
def __init__(self, name , path, disk_type, block_size, capacity, dev_id):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.disk_type = disk_type
|
self.disk_type = disk_type
|
||||||
self.path = path
|
self.path = path
|
||||||
if block_size is not None:
|
if block_size is not None:
|
||||||
self.block_size = block_size
|
self.block_size = block_size
|
||||||
self.capacity = capacity
|
self.capacity = capacity
|
||||||
|
self.serial_num = dev_id
|
||||||
|
|
||||||
def erase(self):
|
def erase(self):
|
||||||
pass
|
pass
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user