1
+ import sys
2
+ from PyQt6 .QtWidgets import QApplication , QMainWindow , QMessageBox
3
+ from ui import Ui_MainWindow
4
+ from PyQt6 .QtCore import Qt ,QPoint
5
+ from PyQt6 .QtGui import QMouseEvent , QIcon
6
+ import os
7
+ import shutil
8
+ import psutil
9
+
10
+ class Cleaner (QMainWindow , Ui_MainWindow ):
11
+ def __init__ (self ):
12
+ super ().__init__ ()
13
+ # 创建UI对象
14
+ self .ui = Ui_MainWindow ()
15
+ # 设置UI
16
+ self .ui .setupUi (self )
17
+ self .setWindowFlag (Qt .WindowType .FramelessWindowHint , True )
18
+ self .setAttribute (Qt .WidgetAttribute .WA_TranslucentBackground , True )
19
+ #self.setWindowFlag(Qt.WindowType.WindowStaysOnTopHint, True)
20
+ self .setMouseTracking (True )
21
+ self .draggable = False
22
+ self .offset = QPoint ()
23
+ self .setWindowTitle ("Windows Cleaner" )
24
+ self .ui .pushButton .clicked .connect (self .boost )
25
+ self .ui .pushButton_2 .clicked .connect (self .clean )
26
+ self .flag = False
27
+
28
+ def mousePressEvent (self , event : QMouseEvent ):
29
+ if event .button () == Qt .MouseButton .LeftButton :
30
+ self .draggable = True
31
+ self .offset = event .pos ()
32
+
33
+ def mouseMoveEvent (self , event : QMouseEvent ):
34
+ if self .draggable :
35
+ self .move (self .mapToGlobal (event .pos () - self .offset ))
36
+
37
+ def mouseReleaseEvent (self , event : QMouseEvent ):
38
+ if event .button () == Qt .MouseButton .LeftButton :
39
+ self .draggable = False
40
+
41
+ def get_v (self ):
42
+ # 获取C盘的使用情况
43
+ usage = psutil .disk_usage ('C:\\ ' ) # 请注意在Windows上使用双反斜杠来表示路径
44
+
45
+ # 获取已用空间(以MB为单位)
46
+ used_space_mb = round (usage .used / (1024 ** 2 ), 2 ) # 转换为MB
47
+ print (f"已用空间: { used_space_mb } MB" )
48
+ return used_space_mb
49
+
50
+ def boost (self ):
51
+ print ("优化加速" )
52
+ self .ui .label_3 .setText ("优化加速中······" )
53
+ v0 = self .get_v ()
54
+ self .boost_prefetch ('C:\\ Windows\\ Prefetch' )
55
+ self .clean_temp_folder ()
56
+ v1 = self .get_v ()
57
+ self .ui .label_3 .setText (f"加速完成!\n 清理出{ format (v0 - v1 ,'.2f' )} MB空间" )
58
+
59
+ def boost_prefetch (self , folder_path ):
60
+ # 获取管理员权限
61
+ if not os .access (folder_path , os .W_OK ):
62
+ raise PermissionError ("You don't have permission to delete files in this folder." )
63
+
64
+ # 遍历文件夹并删除文件
65
+ for filename in os .listdir (folder_path ):
66
+ file_path = os .path .join (folder_path , filename )
67
+ try :
68
+ if os .path .isfile (file_path ):
69
+ os .remove (file_path )
70
+ elif os .path .isdir (file_path ):
71
+ shutil .rmtree (file_path )
72
+ print (f"Deleted: { file_path } " )
73
+ except Exception as e :
74
+ print (f"Failed to delete: { file_path } , Error: { e } " )
75
+
76
+ def clean_temp_folder (self ):
77
+ temp_folder = os .environ .get ('TEMP' )
78
+ for root , dirs , files in os .walk (temp_folder ):
79
+ for file in files :
80
+ try :
81
+ os .remove (os .path .join (root , file ))
82
+ print ("Delete successfully" )
83
+ except Exception as e :
84
+ print (f"Failed to delete { os .path .join (root , file )} : { e } " )
85
+ print ("Temporary files cleaned successfully" )
86
+
87
+ def clean (self ):
88
+ print ("深度清理" )
89
+ self .ui .label_3 .setText ("深度清理中······" )
90
+ v0 = self .get_v ()
91
+ self .boost_prefetch ('C:\\ Windows\\ SoftwareDistribution\\ Download' )
92
+ self .boost_prefetch ('C:\\ Windows\\ Prefetch' )
93
+ self .clean_temp_folder ()
94
+ v1 = self .get_v ()
95
+ self .ui .label_3 .setText (f"加速完成!\n 清理出{ format (v0 - v1 , '.2f' )} MB空间" )
96
+ # 执行磁盘清理命令
97
+ messageBox = QMessageBox ()
98
+ #messageBox.setWindowFlag(Qt.WindowType.WindowStaysOnTopHint) # 设置置顶
99
+ messageBox .setWindowTitle ('是否继续清理?' )
100
+ messageBox .setWindowIcon (QIcon ('resource/clean.png' ))
101
+ messageBox .setText (f"是否使用'磁盘清理'工具继续清理?" )
102
+ messageBox .setStandardButtons (QMessageBox .StandardButton .Ok | QMessageBox .StandardButton .Cancel )
103
+ response = messageBox .exec ()
104
+ if response == QMessageBox .StandardButton .Ok :
105
+ print ("You clicked OK" )
106
+ try :
107
+ os .popen ("cleanmgr" )
108
+ except Exception as e :
109
+ print (f"error{ e } " )
110
+ else :
111
+ print ("You clicked Cancel" )
112
+
113
+ messageBox = QMessageBox ()
114
+ #messageBox.setWindowFlag(Qt.WindowType.WindowStaysOnTopHint) # 设置置顶
115
+ messageBox .setWindowTitle ('是否继续清理?' )
116
+ messageBox .setWindowIcon (QIcon ('resource/clean.png' ))
117
+ messageBox .setText (f"是否从'存储'删除临时文件?\n 注意:此操作可能并不适用于所有Windows版本。" )
118
+ messageBox .setStandardButtons (QMessageBox .StandardButton .Ok | QMessageBox .StandardButton .Cancel )
119
+ response = messageBox .exec ()
120
+ if response == QMessageBox .StandardButton .Ok :
121
+ print ("You clicked OK" )
122
+ try :
123
+ os .system ('start ms-settings:storagesense' )
124
+ except Exception as e :
125
+ print (f"error{ e } " )
126
+ else :
127
+ print ("You clicked Cancel" )
128
+
129
+
130
+ if __name__ == '__main__' :
131
+ app = QApplication (sys .argv )
132
+ form = Cleaner ()
133
+ form .show ()
134
+ sys .exit (app .exec ())
0 commit comments