ACdonglu 发表于 2020-7-11 19:33:34

关于导入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()

Hello. 发表于 2020-7-11 19:41:57

因为也需要导入呀

Twilight6 发表于 2020-7-11 19:42:02




现在的版本的 tkinter 已经把   filedialog 、messagebox 这些组件单独弄成 tkinter 包里面的模块了

filedialog 就在第一排,第四个 py 文件



而你 from tkinter import * 导入的都是 __init__.py 里面的方法组件

所以你需要重新导入



zltzlt 发表于 2020-7-11 19:43:23

from tkinter import * 这一句不会导入 tkinter 包里面其他模块的内容,要另外 from tkinter import filedialog 才能使用。

冬雪雪冬 发表于 2020-7-11 19:45:40

tkinter不是一个模块,而是包,参见https://www.cnblogs.com/mingzhang/p/10675802.html

ACdonglu 发表于 2020-7-12 13:20:36

感谢大家!说的很清楚了。
页: [1]
查看完整版本: 关于导入tkinter的问题