我正在尝试使用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”。任何线索?
答案 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行的目的是能够直接运行脚本,而无需指定可执行文件。为此你需要做 -
chmod u+x <script.py>
)./<script.py>
答案 1 :(得分:0)
应该是from tkinter import filedialog
,您可以尝试from tkinter import *
或import tkinter.filedialog as fd
。如果它不能那样工作,那么你应该尝试重新安装python。
答案 2 :(得分:0)
适用于上述python3
from
tkinter.filedialogimport
askopenfilename