使用简单对话框在Python中选择文件


Answers:


212

使用tkinter怎么样?

from Tkinter import Tk
from tkinter.filedialog import askopenfilename

Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file
print(filename)

做完了!


我收到TypeError:Tk()。withdraw()上不能调用'module'对象-有什么想法吗?
user391339 2014年

1
我必须先执行root = Tk.Tk()然后再执行root.withdraw()。现在,打开的文件对话框窗口不会关闭。
user391339 2014年

20
使用Python 3.x,我相信“ Tkinter”实际上应该全部为小写字母“ tkinter”。
WestAce

1
@WestAce是的,它是从“的Tkinter”到“Tkinter的”改变Python3

1
有什么办法只允许某些类型的文件?例如 我希望用户仅选择图像文件
Shantanu Shinde

85

Etaoin答案的Python 3.x版本的完整性:

from tkinter.filedialog import askopenfilename
filename = askopenfilename()

7
对于完全并行性,可能还应该有import tkinter+ tkinter.Tk().withdraw()
imallett

4
这对我不起作用(在Mac,Python 3.6.6上)GUI窗口打开,但您无法将其关闭,而您却陷入死亡之球
Ben Vincent

1
同样在这里。文件对话框不会关闭
Cabara

1
该代码与接受的答案完全相同,但不完整。
eric

在Mac 10.14.6上,这打开了文件查找器,然后它使整个系统崩溃了:(
gaya

29

使用EasyGui(由pydocepydoc生成的0.96版文档):

import easygui
print(easygui.fileopenbox())

安装:

pip install easygui

演示:

import easygui
easygui.egdemo()

4
这是迄今为止最好的解决方案。主要原因是easygui是一个pip包且易于安装
Yonatan Naor

2
在Mac OSX 10.14.5,python 3.6.7,easygui 0.98.1上,尝试此操作会导致严重崩溃。不建议。
克里斯托弗·巴伯

为什么会invalid syntax出错print easygui.diropenbox()
Bricktop


1
@ChristopherBarber与10.14.6相同。Python只是不断退出。
加亚

11

在Python 2中,使用tkFileDialog模块。

import tkFileDialog

tkFileDialog.askopenfilename()

在Python 3中,使用tkinter.filedialog模块。

import tkinter.filedialog

tkinter.filedialog.askopenfilename()

这不是在Python 3标准安装的一部分
miguelmorin

3

另一个要考虑的选项是Zenity:http://freecode.com/projects/zenity

我遇到的情况是我正在开发Python服务器应用程序(没有GUI组件),因此不想引入对任何python GUI工具包的依赖关系,但是我希望我的一些调试脚本可以通过输入文件进行参数化,并且想要如果用户未在命令行上指定文件,则以可视方式提示用户输入文件。Zenity非常适合。为此,请使用子流程模块调用“ zenity --file-selection”并捕获标准输出。当然,此解决方案不是特定于Python的。

Zenity支持多种平台,并且恰好已经安装在我们的开发服务器上,因此它方便了我们的调试/开发,而没有引入不必要的依赖性。


0

我用wxPython获得的结果比tkinter更好,这是对以后重复的问题的回答:

https://stackoverflow.com/a/9319832

wxPython版本通过xfce桌面在我的OpenSUSE Tumbleweed安装中几乎通过任何其他应用程序生成的文件对话框看上去都与打开文件对话框相同,而tkinter却产生了局促且难以理解的内容,并且使用了不熟悉的侧滚动界面。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.