1
+ from PySide6 .QtCore import QTimer
2
+
1
3
from Localizations import *
2
4
import psutil
3
5
from error_handling import show_error
@@ -11,14 +13,42 @@ def update_model_info(logger, self, model_info):
11
13
def update_system_info (self ):
12
14
ram = psutil .virtual_memory ()
13
15
cpu = psutil .cpu_percent ()
14
- self .ram_bar .setValue (int (ram .percent ))
16
+
17
+ # Smooth transition for RAM bar
18
+ animate_bar (self , self .ram_bar , ram .percent )
19
+
20
+ # Smooth transition for CPU bar
21
+ animate_bar (self , self .cpu_bar , cpu )
22
+
15
23
self .ram_bar .setFormat (
16
24
RAM_USAGE_FORMAT .format (
17
25
ram .percent , ram .used // 1024 // 1024 , ram .total // 1024 // 1024
18
26
)
19
27
)
20
28
self .cpu_label .setText (CPU_USAGE_FORMAT .format (cpu ))
21
- self .cpu_bar .setValue (int (cpu ))
29
+
30
+ def animate_bar (self , bar , target_value ):
31
+ current_value = bar .value ()
32
+ difference = target_value - current_value
33
+
34
+ if abs (difference ) <= 1 : # Avoid animation for small changes
35
+ bar .setValue (target_value )
36
+ return
37
+
38
+ step = 1 if difference > 0 else - 1 # Increment or decrement based on difference
39
+ timer = QTimer (self )
40
+ timer .timeout .connect (lambda : _animate_step (bar , target_value , step , timer ))
41
+ timer .start (10 ) # Adjust the interval for animation speed
42
+
43
+ def _animate_step (bar , target_value , step , timer ):
44
+ current_value = bar .value ()
45
+ new_value = current_value + step
46
+
47
+ if (step > 0 and new_value > target_value ) or (step < 0 and new_value < target_value ):
48
+ bar .setValue (target_value )
49
+ timer .stop ()
50
+ else :
51
+ bar .setValue (new_value )
22
52
23
53
24
54
def update_download_progress (self , progress ):
0 commit comments