我正在尝试将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”。有什么线索吗?
tkinter.filedialog 仅适用于Python 3。
tkinter.filedialog
根据您的尝试,似乎您正在使用Python 2.x,尝试导入tkFileDialog
Python 2.x
tkFileDialog
范例-
import tkFileDialog as filedialog
或者,检查为什么它最终运行Python 2.x而不是Python3.x。
Tkintermodule仅在python 2中存在,python 3具有tkinter模块,因为导入Tkinter时成功导入了它,但是导入时却tkinter无法导入它,我们可以确保最终运行Python 2.x而不是Python 3。
Tkinter
tkinter
你可以做 -
import sys print(sys.version) print(sys.executable)
检查当前正在运行的python版本以及正在运行的python(或python3)的位置。
python
python3
发生此问题的可能性最大,因为即使python3您的脚本中有shebang行,您也很可能正在运行python <script.py>,这始终会导致python 2运行。
python <script.py>
添加python3shebang行的目的是能够直接运行脚本,而无需指定可执行文件。为此,您需要-
chmod u+x <script.py>
./<script.py>