Tkinter导入文件对话框错误

发布于 2021-01-29 15:01:01

我正在尝试将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
被浏览
67
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    tkinter.filedialog 仅适用于Python 3。

    根据您的尝试,似乎您正在使用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。

    你可以做 -

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

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


    发生此问题的可能性最大,因为即使python3您的脚本中有shebang行,您也很可能正在运行python <script.py>,这始终会导致python 2运行。

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

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看