python - 如何打开与 Python 2 和 Python 3 兼容的 Tkinter askopenfilename 对话框
问题描述
我正在尝试编写一个与 Python2.7 和 Python3.x 兼容的简单 Python Tkinter 文件选择器
Python3版本
from tkinter import Tk
from tkinter.filedialog import askopenfilename
root = Tk()
root.withdraw()
filename = askopenfilename(title="Select file")
root.update()
root.destroy()
Python2.7版本
from Tkinter import Tk
from tkFileDialog import askopenfilename
root = Tk()
root.withdraw()
filename = askopenfilename(title="Select file")
root.update()
root.destroy()
如何提出统一的解决方案?
解决方案
首先尝试导入Tk
和askopenfilename
Python 3.x 一样。如果你得到一个ImportError
(没有tkinter
和tkinter.filedialog
模块),尝试像 Python 2.x 一样导入它们。(来自Tkinter
和tkFileDialog
模块)。
这是示例:
try:
# Python 3.x
from tkinter import Tk
from tkinter.filedialog import askopenfilename
except ImportError:
# Python 2.x
from Tkinter import Tk
from tkFileDialog import askopenfilename
root = Tk()
root.withdraw()
filename = askopenfilename(title="Select file")
root.update()
root.destroy()
推荐阅读
- php - 从 XML 响应中提取某些值以创建自定义 JSON 数组
- javascript - VueJS 动态属性作为 HTML/VueMaterial 元素属性的值传递
- kubernetes - 在 yaml 中检索 kubernetes 集群中单个或一组资源的当前配置文件的最安全和最佳方式
- scala - 在 Scala 中使用 String.format 时出错 - java.util.MissingFormatArgumentException:格式说明符“%s”
- angular - 如何从nodejs以反应形式显示图像角度
- c# - 如何从 Oracle 数据库中的多个表中检索数据,创建 DataTable,然后将这些数据存储在 C# 中的类对象中?
- android - 如何解决领域和反应原生应用程序之间的同步问题?
- c++ - 创建一个排序算法,该算法将在一个while循环中以c ++中的特定顺序对多个字符串值进行排序
- javascript - 将展开数组映射到数字
- swift - 如何为 Network.framework 编写 NWProtocolFramer,使用分隔符将流拆分为帧?