1、最早學習Tkinter的時候,在《Tkinter編程代碼實例》中看到的“打開文件對話框”需要用到FileDialog模塊,代碼非常簡單:
from
Tkinter
import
*
from
FileDialog
import
*
root
=
Tk()
fd
=
LoadFileDialog(root)
# 創建打開文件對話框
filename
=
fd.go()
# 顯示打開文件對話框,並獲取選擇的文件名稱
print
filename
root.mainloop()
|
但是界面效果比較簡陋(不是本地風格),而且遇到中文名稱也會顯示為亂碼。所以FileDialog.LoadFileDialog用於快速原型驗證倒是不錯,要拼湊一個稍微上得了台面的界面還是差了點:
2、然后因為使用Python操作過Excel的緣故,接觸了PyWin32擴展庫,在該庫的win32ui模塊中,提供了一個CreateFileDialog方法可以用於創建打開文件對話框,創建代碼也非常簡單:
import
win32ui
dlg
=
win32ui.CreateFileDialog(
1
)
# 1表示打開文件對話框
dlg.SetOFNInitialDir(
'E:/Python'
)
# 設置打開文件對話框中的初始顯示目錄
dlg.DoModal()
filename
=
dlg.GetPathName()
# 獲取選擇的文件名稱
print
filename
|
這個打開文件對話框的界面比較友好,是Windows本地風格的,中文顯示也正常,但缺點是只能在Windows上有效:
3、其實剛開始使用win32ui.CreateFileDialog時,還不會用SetOFNInitialDir設置打開文件對話框的初始顯示目錄,后來遇到了需要設置的情況,因此上網查了下方法,一不小心來到了一個叫做nullege的網站,在上面找到了這個設置方法;同時,還意外地發現了原來還有一個tkFileDialog的模塊,也提供了大量操作文件對話框的方法,使用tkFileDialog.askopenfilename()即可輕松實現我的需求,代碼異常簡單:
import
tkFileDialog
filename
=
tkFileDialog.askopenfilename(initialdir
=
'E:/Python'
)
print
filename
|
界面也是友好的本地風格,與使用win32ui.CreateFileDialog類似,但是優點是tkFileDialog是跨平台的:
當然Python的界面庫豐富多樣,WxPython、PyQt等等都很棒,它們提供的打開文件對話框的方法自然也是非常好用的。使用Python的程序員們很幸運,因為我們的選擇還是有很多的。
話又說回來,nullege是個很不錯的網站,它上面提供了大量有關Python的文檔和示例,也推薦給大家!
轉自:https://www.cnblogs.com/russellluo/archive/2011/10/24/2223216.html