@@ -16,6 +16,12 @@ def __init__(self, icon, name, path, parent_launcher, enabled=True):
1616        self .enabled  =  enabled 
1717        self .is_running  =  False 
1818
19+         # 用于解决单击双击冲突的定时器 
20+         self .click_timer  =  QTimer ()
21+         self .click_timer .setSingleShot (True )
22+         self .click_timer .timeout .connect (self .handle_single_click )
23+         self .double_click_detected  =  False 
24+ 
1925        # 设置固定大小 
2026        self .setFixedSize (CARD_WIDTH , CARD_HEIGHT )
2127
@@ -70,9 +76,9 @@ def __init__(self, icon, name, path, parent_launcher, enabled=True):
7076        # 将删除按钮定位到右上角 
7177        self .delete_btn .move (self .width () -  22 , 2 )
7278
73-         # 单击切换选中状态,双击启动应用  
79+         # 重写鼠标事件处理,解决单击双击冲突  
7480        self .mousePressEvent  =  self .on_mouse_press 
75-         self .mouseDoubleClickEvent  =  self .launch_app 
81+         self .mouseDoubleClickEvent  =  self .on_double_click 
7682
7783        # 创建状态指示器(绿色圆点) 
7884        self .status_indicator  =  QLabel (self )
@@ -146,8 +152,26 @@ def update_style(self):
146152            """ )
147153
148154    def  on_mouse_press (self , event ):
149-         """处理鼠标单击事件,切换选中状态""" 
155+         """处理鼠标按下事件,延迟处理单击避免与双击冲突""" 
156+         if  event .button () ==  Qt .LeftButton :
157+             # 重置双击检测标志 
158+             self .double_click_detected  =  False 
159+             # 启动延迟定时器,200ms后处理单击(如果没有双击) 
160+             self .click_timer .start (200 )
161+ 
162+     def  on_double_click (self , event ):
163+         """处理双击事件,启动应用""" 
150164        if  event .button () ==  Qt .LeftButton :
165+             # 设置双击检测标志,取消单击处理 
166+             self .double_click_detected  =  True 
167+             self .click_timer .stop ()
168+             # 启动应用 
169+             self .launch_app (event )
170+ 
171+     def  handle_single_click (self ):
172+         """处理延迟的单击事件,切换启用状态""" 
173+         # 只有在没有双击的情况下才处理单击 
174+         if  not  self .double_click_detected :
151175            # 切换选中状态 
152176            self .enabled  =  not  self .enabled 
153177            self .update_style ()
@@ -192,7 +216,7 @@ def update_running_status(self):
192216        except  Exception  as  e :
193217            print (f"[状态更新失败] { self .path } { str (e )}  )
194218
195-     def  launch_app (self , event ):
219+     def  launch_app (self , event = None ):
196220        """启动应用""" 
197221        if  not  launch_application (self .path ):
198222            QMessageBox .warning (self , "启动失败" , f"无法启动应用:\n { self .path }  )
0 commit comments