wxPython文件对话框错误:通配符字符串缺少“|”!
我在使用Windows 7,Python 2.6和wxPython 2.8.10.1。我想让这个打开文件的对话框正常工作,但遇到了一个奇怪的错误。对我来说,这个通配符字符串看起来是有效的,但是每当我选择一个文件并在文件对话框中点击“确定”时,我就会看到这个:
Traceback (most recent call last):
File "D:\Projects\python\wxTest.py", line 92, in OnOpen
self.__DoOpen()
File "D:\Projects\python\wxTest.py", line 101, in __DoOpen
if open_dlg.ShowModal() == wx.ID_OK:
File "C:\Python26\lib\site-packages\wx-2.8-msw-unicode\wx\_windows.py", line 711, in ShowModal
return _windows_.Dialog_ShowModal(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "wxAssertFailure" failed at
..\..\src\common\filefn.cpp(1746) in wxParseCommonDialogsFilter():
missing '|' in the wildcard string!
当对话框打开时,一切看起来都很好。有没有什么想法?
补充一下:我打字太快,忘了把那个通配符字符串加上!抱歉...
wcd = "All files(*.*)|*.*|Text files (*.txt)|*.txt|"
open_dlg = wx.FileDialog(self, message='Choose a file', defaultDir=directory, defaultFile='', style=wx.OPEN | wx.CHANGE_DIR)
open_dlg.SetWildcard(wcd)
if open_dlg.ShowModal() == wx.ID_OK:
path = open_dlg.GetPath()
...
1 个回答
7
这个通配符字符串的格式有点特别,是从Win32那里借来的:
Desc1|wildcard1|Desc2|wildcard2 ...
这里面应该有奇数个管道符号,这样用管道符号分开的部分才能成对出现,一个是描述,一个是通配符。比如:
Spreadsheet (*.xls)|*.xls|Plain-old text (*.txt)|*.txt|Random noise|*.dat
注意,描述里经常会有一个括号里的通配符,这只是为了显示效果。
你遇到的问题是最后多了一个管道符号。把它去掉就行了。