python 打開文件對話框相關
阿新 • • 發佈:2019-01-31
相關 inter 擴展 stringvar return 分享 www lena lec
環境: window7
版本: python 2.7
假設我們有如下這樣的需求,如果所示:
1. 通過打開文件,我們可以打開指定的文件,並將其路徑顯示到輸入框中
2. 通過打開目錄,我們可以打開指定的目錄,並將其路徑顯示到輸入框中
3. 通過另存為,我們可以文件名另存為指定的目錄或文件中。
我們可以使用python自帶的模塊:tkFileDialog其相關的方法示例,可參考:https://www.programcreek.com/python/index/671/tkfiledialog
為了滿足如上需求,我們會使用到tkFileDialog的三個方法,為了講解方便,我們會附上代碼說明:
打開文件:
# 打開文件 def openFileEvent(self): # 參數相關: # defaultextension: 默認文件的擴展名 # filetypes: 設置文件類型下拉菜單裏的的選項 # initialdir: 對話框中默認的路徑 # initialfile: 對話框中初始化顯示的文件名 # parent: 父對話框(由哪個窗口彈出就在哪個上端) # title: 彈出對話框的標題 # 選擇文件後,會返回顯示文件的完整路徑,取消的話,會返回空字符串 newDir = tkFileDialog.askopenfilename(initialdir=‘C:\Python27‘, initialfile=‘README‘,title=‘打開新文件‘) if len(newDir) == 0: return # 顯示新路徑內容 self.csdVar.set(newDir)
其效果圖如下:
打開目錄
# 打開目錄 def openDirEvent(self): # 參數相關 #title: 彈出對話框的標題 #initialdir: 對話框中默認的路徑 newDir = tkFileDialog.askdirectory(initialdir=‘C:\Python27‘,title=‘打開目錄‘) # 判定是否選擇了文件夾,如果已選擇則返回其路徑,否則返回空字符 if len(newDir) == 0: return # 顯示內容 self.csdVar.set(newDir
效果圖如下:
另存為
# 另存為 def selectOutPathEvent(self): # 其參數與askopenfilename一樣,不再贅述 newDir = tkFileDialog.asksaveasfilename(initialdir=‘C:\Python27‘) if len(newDir) == 0: return self.outVar.set(newDir)
效果圖如下:
其完整的示例Demo:
# -*- coding:utf-8 -*- # __author__ = ‘Code~‘ import traceback import Tkinter from Tkinter import * import tkFileDialog DEF_PATH = ‘C:\Python27‘ # 消息框模塊 class MsgBox: def __init__(self): # 目錄相關 self.root = Tkinter.Tk() self.showMsgBox() self.root.mainloop() # 顯示消息框 def showMsgBox(self): root = self.root # Label(root, text=‘源文件:‘).grid(row=1, column=0, sticky=‘E‘) self.csdVar = StringVar() self.csdVar.set(DEF_PATH) Entry(root, textvariable=self.csdVar, width=50).grid(row=1, column=1) Button(root, text=‘打開文件‘, command=self.openFileEvent).grid(row=1, column=2) Button(root, text=‘打開目錄‘, command=self.openDirEvent).grid(row=1, column=3) # Label(root, text=‘輸出:‘).grid(row=2, column=0, sticky=‘E‘) self.outVar = StringVar() self.outVar.set(DEF_PATH) Entry(root,textvariable=self.outVar, width=50).grid(row=2, column=1) Button(root,text=‘另存為‘,command=self.selectOutPathEvent).grid(row=2, column=2) # 打開文件 def openFileEvent(self): newDir = tkFileDialog.askopenfilename(initialdir=DEF_PATH,title=‘打開新文件‘) if len(newDir) == 0: return self.csdVar.set(newDir) # 打開目錄 def openDirEvent(self): newDir = tkFileDialog.askdirectory(initialdir=DEF_PATH,title=‘打開目錄‘) if len(newDir) == 0: return self.csdVar.set(newDir) # 另存為 def selectOutPathEvent(self): newDir = tkFileDialog.asksaveasfilename(initialdir=DEF_PATH) if len(newDir) == 0: return self.outVar.set(newDir) if __name__ == "__main__": try: messageBox = MsgBox() except Exception: traceback.print_exc()
python 打開文件對話框相關