Tkinter导入filedialog错误

时间:2015-07-28 07:27:33

标签: python python-3.x 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,在编写

时我有了演示窗口
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:无法导入名称filedialog”。任何线索?

3 个答案:

答案 0 :(得分:12)

tkinter.filedialog仅适用于Python 3。

根据您的尝试,您似乎在使用Python 2.x,尝试导入tkFileDialog

示例 -

import tkFileDialog as filedialog

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

Tkinter模块仅存在于python 2中,python 3具有tkinter模块,因为导入Tkinter时它已成功导入,但导入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>
  3. 运行脚本

答案 1 :(得分:0)

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

答案 2 :(得分:0)

适用于上述python3

  

from tkinter.filedialog import askopenfilename