首页 > 解决方案 > 如何打开与 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()

如何提出统一的解决方案?

标签: pythonpython-3.xpython-2.7tkinter

解决方案


首先尝试导入TkaskopenfilenamePython 3.x 一样。如果你得到一个ImportError(没有tkintertkinter.filedialog模块),尝试像 Python 2.x 一样导入它们。(来自TkintertkFileDialog模块)。
这是示例:

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()

推荐阅读