我正在按照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位。
答案 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()