@@ -242,18 +242,22 @@ def _show_exception(ex: Exception) -> None:
242242 try :
243243 import tkinter
244244 import tkinter .messagebox
245- except (Exception ,): # actually, ` ImportError` or `_tkinter.TclError`
245+ except (ModuleNotFoundError , ImportError ):
246246 pass
247247 else :
248- root : tkinter .Tk = tkinter .Tk ()
249- root .withdraw ()
250- if isinstance (ex , SyntaxError ):
251- tkinter .messagebox .showerror (title = "Syntax Error" , message = error_message )
252- elif isinstance (ex , ImportError ):
253- tkinter .messagebox .showerror (title = "Package Missing" , message = error_message )
248+ try :
249+ root : tkinter .Tk = tkinter .Tk ()
250+ except tkinter .TclError :
251+ pass
254252 else :
255- tkinter .messagebox .showerror (title = "Error" , message = error_message )
256- root .destroy ()
253+ root .withdraw ()
254+ if isinstance (ex , SyntaxError ):
255+ tkinter .messagebox .showerror (title = "Syntax Error" , message = error_message )
256+ elif isinstance (ex , ImportError ):
257+ tkinter .messagebox .showerror (title = "Package Missing" , message = error_message )
258+ else :
259+ tkinter .messagebox .showerror (title = "Error" , message = error_message )
260+ root .destroy ()
257261
258262
259263def download () -> None :
@@ -278,14 +282,20 @@ def main_gui() -> int:
278282 try :
279283 import tkinter
280284 import tkinter .messagebox
281- except (Exception ,): # actually, ` ImportError` or `_tkinter.TclError`
285+ except (ModuleNotFoundError , ImportError ):
282286 approved = True
283287 else :
284- tkinter .Tk ().withdraw ()
285- approved = tkinter .messagebox .askyesno (
286- title = "No GUI found" ,
287- message = "There is no GUI. Would you like to install one?" ,
288- )
288+ try :
289+ root : tkinter .Tk = tkinter .Tk ()
290+ except tkinter .TclError :
291+ approved = True
292+ else :
293+ root .withdraw ()
294+ approved = tkinter .messagebox .askyesno (
295+ title = "No GUI found" ,
296+ message = "There is no GUI. Would you like to install one?" ,
297+ )
298+ root .destroy ()
289299 if approved :
290300 import subprocess
291301 from importlib .util import find_spec
@@ -301,13 +311,20 @@ def main_gui() -> int:
301311 else :
302312 try :
303313 import tkinter .messagebox
304- except (Exception ,): # actually, ` ImportError` or `_tkinter.TclError`
314+ except (ModuleNotFoundError , ImportError ):
305315 pass
306316 else :
307- tkinter .messagebox .showerror (
308- title = "No GUI found" ,
309- message = "Failed to install GUI." ,
310- )
317+ try :
318+ root : tkinter .Tk = tkinter .Tk ()
319+ except tkinter .TclError :
320+ pass
321+ else :
322+ root .withdraw ()
323+ tkinter .messagebox .showerror (
324+ title = "No GUI found" ,
325+ message = "Failed to install GUI." ,
326+ )
327+ root .destroy ()
311328 return 1
312329
313330 process : subprocess .CompletedProcess = subprocess .run (
@@ -326,21 +343,22 @@ def main_gui() -> int:
326343 except (ModuleNotFoundError , ImportError ):
327344 try :
328345 import tkinter .messagebox
329- except (Exception ,): # actually, ` ImportError` or `_tkinter.TclError`
346+ except (ModuleNotFoundError , ImportError ):
330347 pass
331348 else :
332- tkinter .messagebox .showerror (
333- title = "No GUI found" ,
334- message = "Failed to install GUI." ,
335- )
349+ try :
350+ root : tkinter .Tk = tkinter .Tk ()
351+ except tkinter .TclError :
352+ pass
353+ else :
354+ root .withdraw ()
355+ tkinter .messagebox .showerror (
356+ title = "No GUI found" ,
357+ message = "Failed to install GUI." ,
358+ )
359+ root .destroy ()
336360 return process .returncode or 1
337361 else :
338- try :
339- import tkinter
340- except (Exception ,): # actually, `ImportError` or `_tkinter.TclError`
341- pass
342- else :
343- tkinter .Tk ().quit ()
344362 return main ()
345363 else :
346364 return 1
0 commit comments