如何在python中导入Error类(并且只有错误类,而不是命名空间)才能在异常处理中使用?
不打算使用的内容:
from tkinter import _tkinter as tk
try:
...
except tk.TclError:
print('Oops. Bad window path.')
我已经尝试了上述功能,但是这样做也可以将一堆其他内容导入到我不需要的命名空间中,我还需要使用tk.TclError
来引用它只是TclError。
我试图避免,因为它导入了我不需要的整个包,我只需要处理异常:
import tkinter as tk
try:
...
except tk.TclError:
print('Oops. Bad window path.')
那么我如何从包中单独导入 ,而不是获取整个tkinter命名空间,如果这可能或可推荐?
我有两个单独的程序,我在这里称它们为A和B以缩短它。
我想要实现的目标
A.py
## Communicator ##
import B
#... Some irrelevant code ...
GUI = B.start()
try:
#Tell the GUI to modify something, for example:
GUI.entry.insert(0, 'Input')
except TclError:
#Modification failed due to Bad Window Path
B.py
## GUI ##
import tkinter as tk
#Little Function to give the Communicator the required object to start/handle the GUI
def start():
root = tk.Tk()
run = Alarmviewer(root)
return run
#... GUI initialization, creating/destroying of windows, modifications, etc
答案 0 :(得分:1)
可以从tkinter导入TclError
类。要将其设为tk.TclError
,只需导入名为tkinter
的{{1}}:
tk
当然,如果您愿意,您可以只导入import tkinter as tk
try:
...
except tk.TclError:
...
例外,但在此特定示例中,它实际上doesn't have any actual advantage导入整个模块:
TclError
您的问题声称您必须将其引用为from tkinter import TclError
try:
...
except TclError:
...
,但这是一个错误的陈述。您可以通过将其导入的名称来引用它。名称是无关紧要的,重要的是实际的异常对象本身。
例如,创建一个名为gui.py的文件,并在该文件中输入:
tk.TclError
接下来,在另一个文件中添加以下代码:
# gui.py
import tkinter as tk
def do_something():
raise tk.TclError("something bad happened")
运行代码时,您应该看到"我发现了TclError"打印。