关于导入tkinter的问题
在您的书《零基础学python》里有个例子from tkinter import *
root = Tk()
def callback():
fileName = filedialog.askopenfilename()
print(fileName)
Button(root, text='打开文件', command=callback).pack()
mainloop()
运行错误:NameError: name 'filedialog' is not defined
后来在网上找了下,在from tkinter import *下面再加一行from tkinter import filedialog就好了。为什么啊?
以下代码就可以运行
from tkinter import *
from tkinter import filedialog
root = Tk()
def callback():
fileName = filedialog.askopenfilename()
print(fileName)
Button(root, text='打开文件', command=callback).pack()
mainloop() 因为也需要导入呀
现在的版本的 tkinter 已经把 filedialog 、messagebox 这些组件单独弄成 tkinter 包里面的模块了
filedialog 就在第一排,第四个 py 文件
而你 from tkinter import * 导入的都是 __init__.py 里面的方法组件
所以你需要重新导入
from tkinter import * 这一句不会导入 tkinter 包里面其他模块的内容,要另外 from tkinter import filedialog 才能使用。 tkinter不是一个模块,而是包,参见https://www.cnblogs.com/mingzhang/p/10675802.html 感谢大家!说的很清楚了。
页:
[1]