看了下Tkinter的文檔,對於Pop-up dialog有三類,現在用到的是tkFileDialog
tkFileDialog有兩種形式:
一個是.askopenfilename(option=value, ...) 這個是"打開"對話框
另一個是:asksaveasfilename(option=value, ...) 這個是另存為對話框
option參數如下:
defaultextension = s 默認文件的擴展名
filetypes = [(label1, pattern1), (label2, pattern2), ...] 設置文件類型下拉菜單里的的選項
initialdir = D 對話框中默認的路徑
initialfile = F 對話框中初始化顯示的文件名
parent = W 父對話框(由哪個窗口彈出就在哪個上端)
title = T 彈出對話框的標題
如果選中文件的話,確認后會顯示文件的完整路徑,否則單擊取消的話會返回空字符串
[python]
view plain copy
- #coding=UTF-8
- # __author__ = '極致'
- import Tkinter, Tkconstants, tkFileDialog
- class TkFileDialogExample(Tkinter.Frame):
- def __init__(self, root):
- Tkinter.Frame.__init__(self, root)
- # options for buttons
- button_opt = {'fill': Tkconstants.BOTH, 'padx': 5, 'pady': 5}
- # define buttons
- Tkinter.Button(self, text='askopenfile', command=self.askopenfile).pack(**button_opt)
- Tkinter.Button(self, text='askopenfilename', command=self.askopenfilename).pack(**button_opt)
- Tkinter.Button(self, text='asksaveasfile', command=self.asksaveasfile).pack(**button_opt)
- Tkinter.Button(self, text='asksaveasfilename', command=self.asksaveasfilename).pack(**button_opt)
- Tkinter.Button(self, text='askdirectory', command=self.askdirectory).pack(**button_opt)
- # define options for opening or saving a file
- self.file_opt = options = {}
- options['defaultextension'] = '.txt'
- options['filetypes'] = [('all files', '.*'), ('text files', '.txt')]
- options['initialdir'] = 'C:\\'
- options['initialfile'] = 'myfile.txt'
- options['parent'] = root
- options['title'] = 'This is a title'
- # This is only available on the Macintosh, and only when Navigation Services are installed.
- #options['message'] = 'message'
- # if you use the multiple file version of the module functions this option is set automatically.
- #options['multiple'] = 1
- # defining options for opening a directory
- self.dir_opt = options = {}
- options['initialdir'] = 'C:\\'
- options['mustexist'] = False
- options['parent'] = root
- options['title'] = 'This is a title'
- def askopenfile(self):
- """Returns an opened file in read mode."""
- return tkFileDialog.askopenfile(mode='r', **self.file_opt)
- def askopenfilename(self):
- """Returns an opened file in read mode.
- This time the dialog just returns a filename and the file is opened by your own code.
- """
- # get filename
- filename = tkFileDialog.askopenfilename(**self.file_opt)
- # open file on your own
- if filename:
- return open(filename, 'r')
- def asksaveasfile(self):
- """Returns an opened file in write mode."""
- return tkFileDialog.asksaveasfile(mode='w', **self.file_opt)
- def asksaveasfilename(self):
- """Returns an opened file in write mode.
- This time the dialog just returns a filename and the file is opened by your own code.
- """
- # get filename
- filename = tkFileDialog.asksaveasfilename(**self.file_opt)
- # open file on your own
- if filename:
- return open(filename, 'w')
- def askdirectory(self):
- """Returns a selected directoryname."""
- return tkFileDialog.askdirectory(**self.dir_opt)
- if __name__ == '__main__':
- root = Tkinter.Tk()
- TkFileDialogExample(root).pack()
- root.mainloop()