Skip to content

Commit bb8b535

Browse files
committed
Fix 0ad1dfc
The error occurs on loading, not on importing.
1 parent 0ad1dfc commit bb8b535

1 file changed

Lines changed: 49 additions & 31 deletions

File tree

src/pycatsearch/__init__.py

Lines changed: 49 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

259263
def 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

Comments
 (0)