当前位置: 首页 > 面试题库 >

Tkinter导入文件对话框错误

帅博简
2023-03-14
问题内容

我正在尝试将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。

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


 类似资料:
  • 主要内容:文件选择对话框,颜色选择对话框,消息对话框在前面的章节中,我们花费了大量的时间讲解了 Tkinter 中常用基本控件,通过对这些控件的学习,我们对  GUI 开发有了基本的认识与掌握,一个完整的 GUI 程序就是由这些组件以合理、美观的布局方式构成的。 除了基本的控件之外,Tkinter 还提供了三种对话框控件: 文件选择对话框:filedailog 颜色选择对话框:colorchooser 消息对话框:messagebox 这些对话框的

  • 问题内容: 下面的代码在IDLE内运行良好,否则会出现“ NameError:全局名称’messagebox’未定义”的情况。但是,如果我明确声明,则无论从哪里运行都很好。 为什么IDLE不需要显式import语句,而在其他地方则需要它? 问题答案: 消息框是tkinter的单独子模块,因此只需从tkinter进行完整导入即可: 不导入消息框 必须将其显式导入,如下所示: 以与必须显式导入ttk相

  • 我正在学习如何在javafx中创建对话框,我写了一段代码,这给了我一个问题。错误在createLoginDialog方法中。 错误为“无法访问TryDialogBox类型的封闭实例。必须用TryDialogBox类型的封闭实例限定分配(例如x.new A(),其中x是TryDialogBox的实例)。

  • 当我按下文件打开对话框上的取消按钮时(代码如下),我收到以下错误: 错误显示为模式弹出窗口: 到目前为止,我只在Mac电脑上测试过。 我的代码如下: 处理创建对话框的主要过程代码如下: 我的调试器语句从未到达。此外,当实际选择了一些文件时,代码工作正常,只有在按下“取消”时才会失败。 触发IPC调用的代码(ES6 JSX)如下所示: 代码通过巴别塔6进行处理。我的如下: 电子版本:. babel依

  • 问题内容: 我需要知道如何在Java中获取“文件夹浏览”对话框。我知道SWT。但是我需要摇摆吗?有什么解决办法吗? [当我们开始日食时,它将要求选择工作区。那时我们可以看到“浏览文件夹”对话框。 问题答案: 听起来好像您想使用JFileChooser。Oracle有很多关于基本Swing组件以及如何使用它们的教程。这是JFileChooser:link的教程页面。

  • 问题内容: 我正在创建用于更改图像的对话框。而不是让用户单击文件输入字段,而是希望立即显示它。输入字段只是一个: 页面加载时是否有显示方式? 如果有一个角度的方法可以做到这一点。 问题答案: 如此处所述,仅InternetExplorer允许以编程方式打开“文件上传”对话框。因此,简短的答案是“否”,没有办法在页面加载时自动打开“文件上传”对话框。 您可能会考虑的长答案是,当用户单击任何内容时都可