据我了解,这from module import *
意味着模块中的所有内容都将在本地可用。
在我的代码中,我发现:
from tkinter import *
和
from tkinter import filedialog
回顾过去,我认为可以删除最后一行,但是它不可用:
NameError: name 'filedialog' is not defined.
我想念什么?
据我了解,Tkinter是一个程序包(这意味着它包含其他模块)。从Tkinter导入*仅会为您提供默认模块。
从文档中:
6.4.1。从包导入*
现在,当用户从sound.effects import *书写时会发生什么?理想情况下,希望这种方式能进入文件系统,找到包中存在哪些子模块,然后将其全部导入。这可能会花费很长时间,并且导入子模块可能会产生有害的副作用,这些副作用只有在明确导入子模块时才会发生。
唯一的解决方案是让程序包作者提供程序包的显式索引。import语句使用以下约定:如果程序包的init .py代码定义了一个名为all的列表,则将其视为遇到从包import *时应导入的模块名称的列表。发行新版本的软件包时,软件包作者有责任使此列表保持最新。如果软件包作者没有看到从软件包中导入*的用途,他们可能还会决定不支持它。例如,文件sounds / effects / init .py可能包含以下代码:
请阅读以下帖子,以获取对您的问题的另一种答案。文件对话框,tkinter和打开文件
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句