由於某種原因,默認的文件類型會根據我是打開帶菜單的文件對話框還是使用Ctrl + O熱鍵來更改。 爲什麼?tkFileDialog的askopenfilename方法中的默認文件類型
from Tkinter import *
import tkFileDialog
FILEOPENOPTIONS = dict(defaultextension='.bin',
filetypes=[('Bin file','*.bin'), ('All files','*.*')])
class TestGUI(Tk):
def __init__(self):
Tk.__init__(self)
self.title('Test')
menu = self.menubar = Menu(self)
fmenu = self.filemenu = Menu(menu, tearoff=0)
menu.add_cascade(label='File', underline=0, menu=fmenu)
fmenu.add_command(label="Open", underline=0,
accelerator='Ctrl+O',
command=self.fopendialog)
self.config(menu=menu)
self.bind_all('<Control-o>', self.fopendialog)
def fopendialog(self, event=None):
print repr(tkFileDialog.askopenfilename(parent=self,
**FILEOPENOPTIONS))
if __name__ == "__main__":
test = TestGUI()
test.mainloop()
你在什麼操作系統上?菜單以哪種方式更改? – gary 2012-07-07 10:50:06
Windows 7中,默認選擇的文件類型會根據使用哪種方法打開文件對話框而發生更改。而已。在一種情況下,它將是「所有文件」,另一種是「Bin文件」 - 兩種格式都可以在下拉菜單中找到,這只是默認設置。 – Santiclause 2012-07-10 03:16:40
嘗試不同版本的Python?這個論壇[post](http://python.6.n6.nabble.com/tkFileDialog-askopenfilenames-returns-unicode-string-instead-of-tuple-in-python-2-62-td1978109.html)指出Python 2.4和/或Python 2.6中的另一個bug tkFileDialog。你有沒有嘗試Python 2.7甚至3.2? – gary 2012-07-10 10:47:39