【发布时间】:2012-06-17 10:48:20
【问题描述】:
目前我在 Ubuntu 的快速列表编辑器中使用 tkinter 的 askopenfilename 来获取文件的名称和位置。虽然它工作正常,但外观和感觉不是原生的。
是否有一个简单的替代对话窗口来导航和获取文件的名称和位置?
【问题讨论】:
标签: python-3.x ubuntu tkinter file-browser
目前我在 Ubuntu 的快速列表编辑器中使用 tkinter 的 askopenfilename 来获取文件的名称和位置。虽然它工作正常,但外观和感觉不是原生的。
是否有一个简单的替代对话窗口来导航和获取文件的名称和位置?
【问题讨论】:
标签: python-3.x ubuntu tkinter file-browser
你可以试试 wxPython FileDialog:
>>> import wx
>>> d = wx.FileDialog(None)
>>> d.ShowModal()
5101
>>>
它提供了更具体的操作系统外观
wxPython 即将作为 Phoenix 项目进入 py3k,并且已经有 windows 和 mac 的快照(请参阅下面的评论)。如果你想要更稳定的东西,你可以使用 pyQt QtGui.QFileDialog。
import sys
from PyQt4 import QtGui
class Dialog(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
filename = QtGui.QFileDialog.getOpenFileName()
print filename
app = QtGui.QApplication(sys.argv)
dialog = Dialog()
你有一个更完整的例子here。
【讨论】:
Zenity 的File Selection Dialog 使用--file-selection 选项提供了一种简单且具有原生外观的解决方案。该对话框提供了许多选项。
最简单的形式:
#!/usr/bin/env python3
import subprocess
try:
file = subprocess.check_output(["zenity", "--file-selection"]).decode("utf-8").strip()
print(file)
except subprocess.CalledProcessError:
pass
另一个选项是Gtk's FileChooserDialog,正如人们所期望的那样,它会产生完美的本地文件选择器对话框窗口。
【讨论】: