【问题标题】:Tkinter import filedialog errorTkinter 导入文件对话框错误
【发布时间】:2015-07-28 07:27:32
【问题描述】:

我正在尝试使用带有 python3 的 tkinter 打开图像,请参见此处的一段代码:

#!/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,写的时候有demo窗口

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 : cannot import name filedialog”。有什么线索吗?

【问题讨论】:

    标签: python python-3.x tkinter


    【解决方案1】:

    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>

    【讨论】:

    • 确实它正在运行 python2:2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] /usr/bin/python 我正在尝试弄清楚如何让它运行 python3
    • 它返回/usr/bin/python3,我把它放在你的迷你代码的标题中。它仍然返回 2.7.6 版本。我正在考虑尝试alias python=python3
    • 尝试运行 /usr/bin/python3 看看它是否真的是 python3 ,其次你如何将它放在标题中?
    • 运行它会返回 Python 3.4.0 (default, Jun 19 2015, 14:20:21) [GCC 4.8.2] on linux 。我对 python 很陌生,我所说的“标题”是我的代码的前 3 行:#!/usr/bin/env python3 # -*- coding: utf-8 -*- # --- Python 3.4
    • 我猜在添加 shebang (这就是标题的第一行被称为)之后,您正在尝试使用 python <script> 运行,这将始终运行 python 2,您的原因添加 shebang 无需指定可执行文件即可运行,只需运行 - ./<script>.py 或运行 - python3 script.py
    【解决方案2】:

    应该是 from tkinter import filedialog 或者您可以尝试 from tkinter import *import tkinter.filedialog as fd 。如果还是不行,那么你应该尝试重新安装python。

    【讨论】:

      【解决方案3】:

      以上python3

      fromtkinter.filedialog importaskopenfilename

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-03
        • 1970-01-01
        • 1970-01-01
        • 2018-01-23
        • 2012-03-03
        相关资源
        最近更新 更多