Tkinter 导入文件对话框错误

新手上路,请多包涵

我正在尝试将 tkinter 与 python3 结合使用来打开图像,请在此处查看一段代码:

 #!/usr/bin/env python3
# -*- coding: utf-8 -*-
# --- Python 3.4

from PIL import Image
import Tkinter as tk
from Tkinter import filedialog
import numpy as np
import os
var = 'n'

# Importing the image to correct

while var != 'o' :
    var = raw_input("Press \"o\" to open the image to correct\n")
    var = var.lower()
root = tk.Tk()
root.withdraw()
path = filedialog.askopenfilename()
image_test = Image.open(path)

我安装了python3-tk,写的时候有demo窗口

python3 -m tkinter

在终端。我尝试了几种无效的组合:

 import tkinter as tk
from tkinter import filedialog

ImportError : No module named tkinter

,

 import Tkinter as tk
from Tkinter import filedialog

ImportError : cannot import name filedialog

我尝试使用 _tinker、FileDialog、file_dialog,但我总是遇到“ImportError:无法导入名称文件对话框”。任何线索?

原文由 Rémi Vennereau 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 872
2 个回答

tkinter.filedialog 仅适用于 Python 3。

从您的尝试来看,您似乎正在使用 Python 2.x ,尝试导入 tkFileDialog

例子 -

 import tkFileDialog as filedialog


或者,检查为什么它最终运行 Python 2.x 而不是 Python 3.x 。

Tkinter module is only there in python 2 , python 3 has tkinter module, since when importing Tkinter it is successfully getting imported, but when importing tkinter 导入失败,我们可以确定您最终运行的是 Python 2.x 而不是 Python 3。

你可以做 -

 import sys
print(sys.version)
print(sys.executable)

检查当前运行的 python 版本以及正在运行的 python (或 python3 )的位置。


最有可能的是,问题的发生是因为即使你的脚本中有 python3 shebang 行,你很可能正在运行 python <script.py> ,这总是导致 python 2 运行。

添加 python3 shebang 行的目的是能够直接运行脚本,而无需指定可执行文件。为此你需要做 -

  1. 授予脚本可执行权限。 (使用 chmod u+x <script.py>
  2. 然后将脚本运行为 - ./<script.py>

原文由 Anand S Kumar 发布,翻译遵循 CC BY-SA 3.0 许可协议

它应该是 from tkinter import filedialog 或者你可以尝试 from tkinter import *import tkinter.filedialog as fd 。如果它不能那样工作,那么你应该尝试重新安装 python。

原文由 alec_djinn 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题