尝试导入tkFileDialog时出现错误

时间:2018-11-07 20:25:30

标签: python tkinter

我正在按照this tutorial创建自己的简单文本编辑器。但是,我遇到了一个我不知道如何解决的错误。我正在运行以下代码:

from tkinter import *
import tkinter.tkFileDialog

我也尝试过:

import tkinter
import tkinter.tkFileDialog

他们两个都给我这个错误:

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import tkinter.tkFileDialog
ModuleNotFoundError: No module named 'tkinter.tkFileDialog' 

我正在按照本教程中所说的去做,但是不起作用。为什么会这样?

作为参考,我在Windows 10上使用python 3.7 64位。

1 个答案:

答案 0 :(得分:2)

Python 3 tkinter没有tkFileDialog导入。相反,您想像这样导入filedialog

import tkinter as tk # this is the preferred import for tkinter
from tkinter import filedialog

root = tk.Tk()
x = filedialog.askopenfilename()
print(x)
root.mainloop()

如果您只想导入对话框,则可以执行以下操作。

import tkinter as tk # this is the preferred import for tkinter
from tkinter.filedialog import askopenfilename

root = tk.Tk()
x = askopenfilename()
print(x)
root.mainloop()

更新:根据Bryan在下面提到的内容,这里是另一个示例,其中包括一些延迟,以帮助防止提到的问题。尽管这仅适用于在到达mainloop之前打开的dilog,并且对于许多应用程序,我认为这不是问题,因为在GUI中对话框通常不是第一件事。但是,仍然是很好的信息。

import tkinter as tk
from tkinter import filedialog

root = tk.Tk()

def print_file_name():
    x = filedialog.askopenfilename()
    print(x)

root.after(100, print_file_name)
root.mainloop()

或者:

import tkinter as tk # this is the preferred import for tkinter
from tkinter.filedialog import askopenfilename

root = tk.Tk()

def print_file_name():
    x = askopenfilename()
    print(x)

root.after(100, print_file_name)
root.mainloop()