2015-07-28 125 views
2

我试图使用Tkinter的与python3中打开图像,在这里看到的一段代码:Tkinter的进口FileDialog的错误

#!/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“。任何线索?

回答

10

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家当行,你最有可能运行python <script.py>,这始终会导致蟒蛇2运行。

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

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

事实上它正在运行python2:'2.7.6(默认情况下,2015年6月22日,17时58分十三秒) [GCC 4.8.2] /usr/bin/python '我试图弄清楚如何让它运行python3 –

+0

尝试 - '哪个python3' - 在命令行 –

+0

它返回'/ usr/bin/python3',我把它放在头部你的小代码。它仍然返回2.7.6版本。我正在考虑尝试'别名python = python3' –

0

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