3838_translate = QCoreApplication .translate
3939
4040
41- class PluginManagerUI (RoundQDialog ):
41+ class PluginManagerUI (QDialog ):
4242
4343 def __init__ (self , plugin_names : list [str ]):
4444 """
@@ -64,8 +64,10 @@ def __init__(self, plugin_names: list[str]):
6464 # ================= 左侧插件列表 =================
6565 self .list_widget = QListWidget ()
6666 for name in self .plugin_names :
67- self .list_widget .addItem (
68- PluginManager .instance ().Get_Context_By_Name (name ).display_name )
67+ ctx = PluginManager .instance ().Get_Context_By_Name (name )
68+ if ctx is None :
69+ continue
70+ self .list_widget .addItem (ctx .display_name )
6971
7072 self .list_widget .currentRowChanged .connect (self .on_plugin_selected )
7173 root_layout .addWidget (self .list_widget , 1 )
@@ -167,6 +169,8 @@ def update_context(self, index: int):
167169
168170 ctx = PluginManager .instance ().Get_Context_By_Name (
169171 self .plugin_names [index ])
172+ if ctx is None :
173+ return
170174
171175 # --- PluginContext 原样填充 ---
172176 for key , value in msgspec .structs .asdict (ctx ).items ():
@@ -184,8 +188,11 @@ def load_settings(self, settings: Dict[str, BaseSetting]):
184188 # 清空原控件
185189 while self .scroll_layout .count ():
186190 item = self .scroll_layout .takeAt (0 )
187- if item .widget ():
188- item .widget ().deleteLater ()
191+ if item is None :
192+ continue
193+ widget = item .widget ()
194+ if widget is not None :
195+ widget .deleteLater ()
189196
190197 self .current_settings_widgets .clear ()
191198
@@ -221,14 +228,11 @@ def load_settings(self, settings: Dict[str, BaseSetting]):
221228 # 保存按钮
222229 # ===================================================================
223230 def on_save_clicked (self ):
224- ctx = self .plugin_contexts [self .list_widget .currentRow ()]
225-
226- # --- PluginContext 原样填充 ---
227- for key , label in self .detail_labels .items ():
228- value = getattr (ctx , key )
229- if isinstance (value , list ):
230- value = ", " .join (value )
231- label .setText (str (value ))
231+ ctx = PluginManager .instance ().Get_Context_By_Name (
232+ self .plugin_names [self .list_widget .currentRow ()]
233+ )
234+ if ctx is None :
235+ return
232236
233237 # --- 你自己的获取 settings 的函数 ---
234238 settings_dict = PluginManager .instance ().Get_Settings (ctx .name )
0 commit comments