据我了解,from module import *
这意味着模块中的所有内容都将在本地可用。
在我的代码中,我发现:
from tkinter import *
和
from tkinter import filedialog
回首往事,我想我可以删除最后一行,但后来它不可用:
NameError: name 'filedialog' is not defined.
我错过了什么?
据我了解,from module import *
这意味着模块中的所有内容都将在本地可用。
在我的代码中,我发现:
from tkinter import *
和
from tkinter import filedialog
回首往事,我想我可以删除最后一行,但后来它不可用:
NameError: name 'filedialog' is not defined.
我错过了什么?
据我了解,Tkinter 是一个包(这意味着它包含其他模块)。From Tkinter import * 只会给你默认模块。
从文档中:
6.4.1. 从包中导入 *
现在当用户从 sound.effects import * 写入时会发生什么?理想情况下,希望以某种方式传递到文件系统,找到包中存在哪些子模块,然后将它们全部导入。这可能需要很长时间,并且导入子模块可能会产生不希望的副作用,这些副作用仅在显式导入子模块时才会发生。
唯一的解决方案是包作者提供包的显式索引。import 语句使用以下约定:如果包的init .py 代码定义了一个名为all的列表,则它被视为遇到 from package import * 时应导入的模块名称列表。当包的新版本发布时,由包作者保持这个列表是最新的。包作者也可能决定不支持它,如果他们没有看到从他们的包中导入 * 的用途。例如,文件sounds/effects/ init .py 可能包含以下代码:
请阅读以下帖子以获取您问题的另一个答案。 文件对话框、tkinter 和打开文件