diff --git a/src/laser-feedbacks.py b/src/laser-feedbacks.py
index b1a2365cd6b0bf034baa096cad0d5e8fc0da54e7..1b353a12f77467a22a183946cbfb9eb1df4b1279 100755
--- a/src/laser-feedbacks.py
+++ b/src/laser-feedbacks.py
@@ -1,17 +1,4 @@
-#!/usr/bin/python 
-
-##################### python3 errors ################################
-#Traceback (most recent call last):
-#  File "fermilaserfeedbacks_V2.py", line 580, in <module>
-#    window = MainWindow()
-#  File "fermilaserfeedbacks_V2.py", line 186, in __init__
-#    mappa = devpil.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
-#TypeError: 'dict_items' object does not support indexing
-#Exception ignored in: <bound method MainWindow.__del__ of <__main__.MainWindow object at 0x7f89caa05288>>
-#Traceback (most recent call last):
-#  File "fermilaserfeedbacks_V2.py", line 426, in __del__
-#    self.timer.stop()
-#AttributeError: 'MainWindow' object has no attribute 'timer'
+#!/usr/bin/python3 
 
 import PyTango
 from PyQt4.QtCore import *
@@ -22,196 +9,199 @@ sogliauno = 70 # % per sfondo giallo
 sogliadue = 90 # % per sfondo rosso
 
 dev = {}
-dev['calendario_sl'] = PyTango.DeviceProxy('sl/laser/calendar_sl.01')
-dev['calendario_slu'] = PyTango.DeviceProxy('slu/laser/calendar_slu.01')
-selettore_sl = dev['calendario_sl'].activityNum
-selettore_slu = dev['calendario_slu'].activityNum
-
+try:
+    dev['calendario_sl'] = PyTango.DeviceProxy('sl/laser/calendar_sl.01')
+    dev['calendario_slu'] = PyTango.DeviceProxy('slu/laser/calendar_slu.01')
+    selettore_sl = dev['calendario_sl'].activityNum
+    selettore_slu = dev['calendario_slu'].activityNum
+except:
+    print('dev')
 devpil = {}
-devpil['pillegendtiming'] = PyTango.DeviceProxy('pil/feedback/fbdelay_pil.01')
-devpil['pilrienergy'] = PyTango.DeviceProxy('pil/feedback/fb_energy_ir_pil.01')
-devpil['feedbackcarica'] = PyTango.DeviceProxy('f/feedback/charge_fb.01')
-
+try:    
+    devpil['pillegendtiming'] = PyTango.DeviceProxy('pil/feedback/fbdelay_pil.01')
+    devpil['pilrienergy'] = PyTango.DeviceProxy('pil/feedback/fb_energy_ir_pil.01')
+    devpil['feedbackcarica'] = PyTango.DeviceProxy('f/feedback/charge_fb.01')
+except:
+    print('devpil')
 devlh = {}
-devlh['lhpointing'] = PyTango.DeviceProxy('lhl/feedback/rtltf_lhl.01')
-devlh['lhtransport'] = PyTango.DeviceProxy('lhl/feedback/rtltf_transport_lhl.01')
-
+try:
+    devlh['lhpointing'] = PyTango.DeviceProxy('lhl/feedback/rtltf_lhl.01')
+    devlh['lhtransport'] = PyTango.DeviceProxy('lhl/feedback/rtltf_transport_lhl.01')
+except:
+    print('devlh')
 devsl = {}
 if selettore_sl == 1: #ELITE1_OPA_FEL1
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01')
-    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    try:
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01')
+        devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    except:
+        print('devsl')
 elif selettore_sl == 2: #ELITE1_OPA_FEL1_ELITE2_SLU
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
-    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
-    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
-    devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01')
-    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    try:
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+        devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+        devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+        devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01')
+        devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    except:
+        print('devsl')
 elif selettore_sl == 3: #ELITE1_THG_FEL1
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    try:
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    except:
+        print('devsl')
 elif selettore_sl == 4: #ELITE1_THG_FEL1_ELITE2_SLU
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
-    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
-    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
-    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    try:
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+        devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+        devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+        devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    except:
+        print('devsl')
 elif selettore_sl == 5: #ELITE1_THGOPA_FEL1
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    try:
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    except:
+        print('devsl')
     #feedback pointing thg
 elif selettore_sl == 6: #ELITE1_THGOPA_FEL1_ELITE2_SLU 
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
-    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
-    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
-    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    try:
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+        devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+        devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+        devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+    except:
+        print('devsl')
     #feedback pointing thg
 elif selettore_sl == 7: #ELITE2_THG_FEL2
-    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
-    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
-    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
-    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    try:
+        devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+        devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+        devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+        devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    except:
+        print('devsl')
 elif selettore_sl == 8: #ELITE2_THG_FEL2_ELITE1_SLU
-    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
-    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
-    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    try:
+        devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+        devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+        devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    except:
+        print('devsl')
 elif selettore_sl == 9: #ELITE2_OPA_FEL2
-    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
-    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
-    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
-    devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01')
-    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    try:
+        devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+        devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+        devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+        devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01')
+        devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    except:
+        print('devsl')
 elif selettore_sl == 10: #ELITE2_OPA_FEL2_ELITE1_SLU
-    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
-    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
-    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01')
-    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    try:
+        devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+        devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+        devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01')
+        devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    except:
+        print('devsl')
 elif selettore_sl == 11: #ELITE2_THG_FEL2_ELITE1_EEHG
-    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
-    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
-    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    try:
+        devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+        devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+        devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    except:
+        print('devsl')
     #feedback eehg
 elif selettore_sl == 0: #SHUTDOWN
     devsl = {}
 else:
-    devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
-    devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
-    devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
-    devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
-    devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
-    devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
-    devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01')
-    devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
-    devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01')
-    devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
-######################## FAST FEEDBACK
-#devslu = {}
-#devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01')
-#if selettore_slu == 1: #ELITE2_TIMER
-#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
-#    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/rtltf_timer_slu.01')
-#elif selettore_slu == 2: #ELITE2_TIMEX
-#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
-#    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/rtltf_timex_slu.01')
-#elif selettore_slu == 3: #ELITE2_DIPRI
-#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
-#    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/rtltf_diproi_slu.01')
-#elif selettore_slu == 4: #ELITE2_LDM
-#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
-#    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/rtltf_ldm_slu.01')
-#elif selettore_slu == 5: #ELITE2_TOTEM
-#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
-#    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01')
-#elif selettore_slu == 6: #ELITE2_MAGNEDYN
-#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
-#    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/rtltf_mag_slu.01')
-#elif selettore_slu == 7: #ELITE1_TIMER
-#    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/rtltf_timer_slu.01')
-#elif selettore_slu == 8: #ELITE1_TIMEX
-#    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/rtltf_timex_slu.01')
-#elif selettore_slu == 9: #ELITE1_DIPRI
-#    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/rtltf_diproi_slu.01')
-#elif selettore_slu == 10: #ELITE1_LDM
-#    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/rtltf_ldm_slu.01')
-#elif selettore_slu == 11: #ELITE1_TOTEM
-#    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01')
-#elif selettore_slu == 12: #ELITE1_MAGNEDYN
-#    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/rtltf_mag_slu.01')
-#elif selettore_slu == 0: #SHUTDOWN
-#    devslu = {}
-#else:
-#    devslu['sluelite2'] = PyTango.DeviceProxy('slu/feedback/rtltf_slr_slu.01')
-#    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/rtltf_totem_slu.01')
-#    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/rtltf_timer_slu.01')
-#    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/rtltf_timex_slu.01')
-#    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/rtltf_diproi_slu.01')
-#    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/rtltf_ldm_slu.01')
-#    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/rtltf_mag_slu.01')
-
+    try:
+        devsl['slelite1input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.02')
+        devsl['slelite1output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.01')
+        devsl['slelite1timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.01')
+        devsl['slelite2input'] = PyTango.DeviceProxy('sl/feedback/rtltf_osc.01')
+        devsl['slelite2output'] = PyTango.DeviceProxy('sl/feedback/rtltf_elite.02')
+        devsl['slelite2timing'] = PyTango.DeviceProxy('sl/feedback/fbdelay_sl.02')
+        devsl['fel1energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel01.01')
+        devsl['fel1pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel01.01')
+        devsl['fel2energyopa'] = PyTango.DeviceProxy('sl/feedback/fb_opa_energy_fel02.01')
+        devsl['fel2pointing'] = PyTango.DeviceProxy('sl/feedback/rtltf_fel02.01')
+    except:
+        print('devsl')
 ###################### MIMO FEEDBACK
 devslu = {}
-if selettore_slu == 1: #ELITE2_TIMER
-    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01')
-elif selettore_slu == 2: #ELITE2_TIMEX
-    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01')
-elif selettore_slu == 3: #ELITE2_DIPRI
-    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01')
-elif selettore_slu == 4: #ELITE2_LDM
-    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01')
-elif selettore_slu == 5: #ELITE2_TOTEM
-    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/mimofb_totem_slu.01')
-elif selettore_slu == 6: #ELITE2_MAGNEDYN
-    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01')
-elif selettore_slu == 7: #ELITE1_TIMER
-    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01')
-elif selettore_slu == 8: #ELITE1_TIMEX
-    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01')
-elif selettore_slu == 9: #ELITE1_DIPRI
-    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01')
-elif selettore_slu == 10: #ELITE1_LDM
-    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01')
-elif selettore_slu == 11: #ELITE1_TOTEM
-    devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/mimofb_totem_slu.01')
-elif selettore_slu == 12: #ELITE1_MAGNEDYN
-    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01')
+if selettore_slu == 1 or selettore_slu == 7: #ELITE2_TIMER
+    try:
+        devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01')
+    except:
+        print('devslu')
+elif selettore_slu == 2 or selettore_slu == 8: #ELITE2_TIMEX
+    try:
+        devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01')
+    except:
+        print('devslu')
+elif selettore_slu == 3 or selettore_slu == 9: #ELITE2_DIPRI
+    try:
+        devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01')
+    except:
+        print('devslu')
+elif selettore_slu == 4 or selettore_slu == 10: #ELITE2_LDM
+    try:
+        devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01')
+    except:
+        print('devslu')
+elif selettore_slu == 5 or selettore_slu == 11: #ELITE2_TOTEM
+    try:
+        devslu['slutotem'] = PyTango.DeviceProxy('slu/feedback/mimofb_totem_slu.01')
+    except:
+        print('devslu')
+elif selettore_slu == 6 or selettore_slu == 12: #ELITE2_MAGNEDYN
+    try:
+        devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01')
+    except:
+        print('devslu')
 elif selettore_slu == 0: #SHUTDOWN
     devslu = {}
 else:
-    devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01')
-    devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01')
-    devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01')
-    devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01')
-    devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01')
-
-
-
-
+    try:
+        devslu['slutimer'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmr_slu.01')
+        devslu['slutimez'] = PyTango.DeviceProxy('slu/feedback/mimofb_tmx_slu.01')
+        devslu['sludiproi'] = PyTango.DeviceProxy('slu/feedback/mimofb_diproi_slu.01')
+        devslu['sluldm'] = PyTango.DeviceProxy('slu/feedback/mimofb_ldm_slu.01')
+        devslu['slumagnedyn'] = PyTango.DeviceProxy('slu/feedback/mimofb_mag_slu.01')
+    except:
+        print('devslu')
 
 #slu - esterni
 #devslu['timer'] = PyTango.DeviceProxy('srv-tmr-srf:20000/tmr/slu/rtltf_tmr.01')
@@ -220,8 +210,6 @@ else:
 #devslu['ldmthg'] = PyTango.DeviceProxy('srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.01')
 #devslu['ldmfund'] = PyTango.DeviceProxy('srv-ldm-srf:20000/ldm/feedback/rtltf_ldm.02')
 
-
-
 class MainWindow(QDialog):
     def __init__(self, parent = None):
         super(MainWindow, self).__init__(parent)
@@ -237,225 +225,101 @@ class MainWindow(QDialog):
         lopil = QGridLayout()
         #print(len(devpil))
         for indice in range(len(devpil)):
-            mappa = devpil.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            mappa = list(devpil.items())[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            tmpnome = list(devpil.items())[indice][1].name().split('/') #leggo nome device
+            nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+            exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+            exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+            exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+            exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+            exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+            exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
             if mappa[1] == 'rtltf-srv':
-                tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster' + devpil.items()[indice][1].name() + ' --laser &"))') #creo comando apri pannello
-                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster' + list(devpil.items())[indice][1].name() + ' --laser &"))') #creo comando apri pannello
             #elif mappa[1] == 'dcf-srv':
-                #tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
-                #nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                #exec('self.' + nomedicomodoperpannello + '_state = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                #exec('self.' + nomedicomodoperpannello + '_state.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_state, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                #exec('self.' + nomedicomodoperpannello + '_state.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + list(devpil.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'mimofb-srv':
-                tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + list(devpil.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'sequencerconf-srv':
-                tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + list(devpil.items())[indice][1].name() +' &"))') #creo comando apri pannello
             #elif mappa[1] == 'lefb-srv':
-                #tmpnome = devpil.items()[indice][1].name().split('/') #leggo nome device
-                #nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                #exec('self.' + nomedicomodoperpannello + '_state = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                #exec('self.' + nomedicomodoperpannello + '_state.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devpil.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_state, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                #exec('lopil.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+                #exec('self.' + nomedicomodoperpannello + '_state.clicked.connect(lambda: os.system("/runtime/bin/lef ' + list(devpil.items())[indice][1].name() +' &"))') #creo comando apri pannello
         self.riquadrodipil.setLayout(lopil)
         self.riquadrodilhl = QGroupBox('LHL')
         self.riquadrodilhl.setStyleSheet("background-color: rgb(255, 200, 200)")
         lolh = QGridLayout()
         #print(len(devlh))
         for indice in range(len(devlh)):
-            mappa = devlh.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            mappa = list(devlh.items())[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            tmpnome = list(devlh.items())[indice][1].name().split('/') #leggo nome device
+            nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+            exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+            exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+            exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+            exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+            exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+            exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
             if mappa[1] == 'rtltf-srv':
-                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + devlh.items()[indice][1].name() +' --laser &"))') #creo comando apri pannello
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + list(devlh.items())[indice][1].name() +' --laser &"))') #creo comando apri pannello
             elif mappa[1] == 'dcf-srv':
-                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + list(devlh.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'mimofb-srv':
-                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + list(devlh.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'sequencerconf-srv':
-                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                #exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + list(devlh.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'lefb-srv':
-                tmpnome = devlh.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devlh.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('lolh.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + list(devlh.items())[indice][1].name() +' &"))') #creo comando apri pannello
         self.riquadrodilhl.setLayout(lolh)
         self.riquadrodisl = QGroupBox('SEED')
         self.riquadrodisl.setStyleSheet("background-color: rgb(200, 255, 255)")
         losl = QGridLayout()
         #print(len(devsl))
         for indice in range(len(devsl)):
-            mappa = devsl.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            mappa = list(devsl.items())[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            tmpnome = list(devsl.items())[indice][1].name().split('/') #leggo nome device
+            nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+            exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+            exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+            exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+            exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+            exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+            exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
             if mappa[1] == 'rtltf-srv':
-                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + devsl.items()[indice][1].name() + ' --laser &"))') #creo comando apri pannello
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + list(devsl.items())[indice][1].name() + ' --laser &"))') #creo comando apri pannello
             elif mappa[1] == 'dcf-srv':
-                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + list(devsl.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'mimofb-srv':
-                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + list(devsl.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'sequencerconf-srv':
-                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                #exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + list(devsl.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'lefb-srv':
-                tmpnome = devsl.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devsl.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('losl.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + list(devsl.items())[indice][1].name() +' &"))') #creo comando apri pannello
         self.riquadrodisl.setLayout(losl)
         self.riquadrodislu = QGroupBox('SLU')
         self.riquadrodislu.setStyleSheet("background-color: rgb(200, 255, 200)")
         loslu = QGridLayout()
         #print(len(devslu))
         for indice in range(len(devslu)):
-            mappa = devslu.items()[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            mappa = list(devslu.items())[indice][1].adm_name().split('/') #dal tipo di device ricostruisco che bottoni mettere
+            tmpnome = list(devslu.items())[indice][1].name().split('/') #leggo nome device
+            nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
+            exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
+            exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
+            exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
+            exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
+            exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
+            exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
             #print(mappa) ######## DA SISTEMARE
             if mappa[1] == 'rtltf-srv':
-                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + devslu.items()[indice][1].name() + ' --laser &"))') #creo comando apri pannello
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/ftfmaster ' + list(devslu.items())[indice][1].name() + ' --laser &"))') #creo comando apri pannello
             elif mappa[1] == 'dcf-srv':
-                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/fbdelay ' + list(devslu.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'mimofb-srv':
-                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/mimofb ' + list(devslu.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'sequencerconf-srv':
-                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                #exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                #exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/usr/local/tango-8.1.2.c/bin/atkpanel ' + list(devslu.items())[indice][1].name() +' &"))') #creo comando apri pannello
             elif mappa[1] == 'lefb-srv':
-                tmpnome = devslu.items()[indice][1].name().split('/') #leggo nome device
-                nomedicomodoperpannello = tmpnome[2].replace('.', '') #creo nome per elementi grafici del pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone = QPushButton("' + tmpnome[2] + '")') # creo il tasto per lanciare il pannello
-                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + devslu.items()[indice][1].name() +' &"))') #creo comando apri pannello
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_bottone, ' + str(indice+1) + ', 0, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_stato = QLineEdit("")') # creo il il campo per scrivere lo stato
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_stato, ' + str(indice+1) + ', 1, 1, 1)') #schiaffo l'elemento grafico nel layout
-                exec('self.' + nomedicomodoperpannello + '_percentuale = QLineEdit("%")') # creo il il campo per scrivere %
-                exec('loslu.addWidget(self.' + nomedicomodoperpannello + '_percentuale, ' + str(indice+1) + ', 2, 1, 1)') #schiaffo l'elemento grafico nel layout
+                exec('self.' + nomedicomodoperpannello + '_bottone.clicked.connect(lambda: os.system("/runtime/bin/lef ' + list(devslu.items())[indice][1].name() +' &"))') #creo comando apri pannello
         self.riquadrodislu.setLayout(loslu)
         loglobale = QGridLayout()
         #loglobale.addWidget(self.riquadrodiselezione, 0, 0, 1, 2)
@@ -474,139 +338,135 @@ class MainWindow(QDialog):
         self.update()
         pass
     
-    #/runtime/bin/ftfmaster sl/feedback/rtltf_osc.02 -title Elite1_INPUT_pointing_Feedback_(rtltf_osc.02) --laser
-
     def __del__(self):
         self.timer.stop()
         pass
 
     def update(self):
         #print('pil: ' + str(len(devpil)) + ', lhl: ' + str(len(devlh)) + ', sl: ' + str(len(devsl)) + ', slu: ' + str(len(devslu)))
-        chiavipil = devpil.keys()
+        chiavipil = list(devpil.keys())
         for indice in range(len(chiavipil)):
             if str(devpil[chiavipil[indice]]).split('(')[0] == 'MIMOFB':
                 percentuale = round(devpil[chiavipil[indice]].ActuatorMaxPercentage, 0)
-                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
                 if percentuale <= sogliauno:
-                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                    exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
                 elif percentuale > sogliauno and percentuale < sogliadue:
-                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                    exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
                 elif percentuale >= sogliadue:
-                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+                    exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
             elif str(devpil[chiavipil[indice]]).split('(')[0] == 'RTLTF':
                 percentuale = round(max(devpil[chiavipil[indice]].CorHorMax, devpil[chiavipil[indice]].CorVerMax), 0)
-                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
                 if percentuale <= sogliauno:
-                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                    exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
                 elif percentuale > sogliauno and percentuale < sogliadue:
-                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                    exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
                 elif percentuale >= sogliadue:
-                    exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+                    exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
             stato = str(devpil[chiavipil[indice]].state())
-            exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
+            exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
             if stato == 'ON' or stato == 'RUNNING':
-                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
+                exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
             elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING':
-                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
+                exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
             elif stato == 'OFF':
-                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
+                exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
             else:
-                exec('self.' + devpil.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
+                exec('self.' + list(devpil.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
         
-        chiavilhl = devlh.keys()
+        chiavilhl = list(devlh.keys())
         for indice in range(len(chiavilhl)):
             if str(devlh[chiavilhl[indice]]).split('(')[0] == 'MIMOFB':
                 percentuale = round(devlh[chiavilhl[indice]].ActuatorMaxPercentage, 0)
-                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
                 if percentuale <= sogliauno:
-                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                    exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
                 elif percentuale > sogliauno and percentuale < sogliadue:
-                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                    exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
                 elif percentuale >= sogliadue:
-                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+                    exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
             elif str(devlh[chiavilhl[indice]]).split('(')[0] == 'RTLTF':
                 percentuale = round(max(devlh[chiavilhl[indice]].CorHorMax, devlh[chiavilhl[indice]].CorVerMax), 0)
-                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
                 if percentuale <= sogliauno:
-                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                    exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
                 elif percentuale > sogliauno and percentuale < sogliadue:
-                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                    exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
                 elif percentuale >= sogliadue:
-                    exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+                    exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
             stato = str(devlh[chiavilhl[indice]].state())
-            exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
+            exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
             if stato == 'ON' or stato == 'RUNNING':
-                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
+                exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
             elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING':
-                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
+                exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
             elif stato == 'OFF':
-                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
+                exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
             else:
-                exec('self.' + devlh.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
+                exec('self.' + list(devlh.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
         
-        chiavisl = devsl.keys()
+        chiavisl = list(devsl.keys())
         for indice in range(len(chiavisl)):
             if str(devsl[chiavisl[indice]]).split('(')[0] == 'MIMOFB':
                 percentuale = round(devsl[chiavisl[indice]].ActuatorMaxPercentage, 0)
-                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
                 if percentuale <= sogliauno:
-                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                    exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
                 elif percentuale > sogliauno and percentuale < sogliadue:
-                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                    exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
                 elif percentuale >= sogliadue:
-                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+                    exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
             elif str(devsl[chiavisl[indice]]).split('(')[0] == 'RTLTF':
                 percentuale = round(max(devsl[chiavisl[indice]].CorHorMax, devsl[chiavisl[indice]].CorVerMax), 0)
-                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
                 if percentuale <= sogliauno:
-                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                    exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
                 elif percentuale > sogliauno and percentuale < sogliadue:
-                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                    exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
                 elif percentuale >= sogliadue:
-                    exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+                    exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
             stato = str(devsl[chiavisl[indice]].state())
-            exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
+            exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
             if stato == 'ON' or stato == 'RUNNING':
-                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
+                exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
             elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING':
-                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
+                exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
             elif stato == 'OFF':
-                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
+                exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
             else:
-                exec('self.' + devsl.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
-################################## DA QUI
-        chiavislu = devslu.keys()
+                exec('self.' + list(devsl.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
+        
+        chiavislu = list(devslu.keys())
         for indice in range(len(chiavislu)):
             if str(devslu[chiavislu[indice]]).split('(')[0] == 'MIMOFB':
                 percentuale = round(devslu[chiavislu[indice]].ActuatorMaxPercentage, 0)
-                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
                 if percentuale <= 60:
-                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                    exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
                 elif percentuale > 60 and percentuale < 80:
-                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                    exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
                 elif percentuale >= 80:
-                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+                    exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
             elif str(devslu[chiavislu[indice]]).split('(')[0] == 'RTLTF':
                 percentuale = round(max(devslu[chiavislu[indice]].CorHorMax, devslu[chiavislu[indice]].CorVerMax), 0)
-                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
+                exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setText("' + str(percentuale) + ' % ")')
                 if percentuale <= 60:
-                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
+                    exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #00ff00")')
                 elif percentuale > 60 and percentuale < 80:
-                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
+                    exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ffff00")')
                 elif percentuale >= 80:
-                    exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
+                    exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_percentuale.setStyleSheet("background-color: #ff0000")')
             stato = str(devslu[chiavislu[indice]].state())
-            exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
+            exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setText("' + stato + '")')
             if stato == 'ON' or stato == 'RUNNING':
-                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
+                exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #00ff00")')
             elif stato == 'STANDBY' or stato == 'MOVING' or stato == 'WAITING':
-                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
+                exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffff00")')
             elif stato == 'OFF':
-                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
+                exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ffffff")')
             else:
-                exec('self.' + devslu.items()[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
-
-############################ manca hide/show
+                exec('self.' + list(devslu.items())[indice][1].name().split('/')[2].replace('.', '') + '_stato.setStyleSheet("background-color: #ff0000")')
 
 if __name__ == '__main__':
     app = QApplication([])