Ошибка диалогового окна файла wxPython: отсутствует "|" в строке шаблона! - PullRequest
2 голосов
/ 23 декабря 2009

Я на Windows7, использую 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 голосов
/ 23 декабря 2009

Строка подстановочного знака имеет причудливый формат, заимствованный из Win32:

Desc1|wildcard1|Desc2|wildcard2 ...

Должно быть нечетное количество каналов, чтобы части, разделенные трубами, образовывали пары, описание и подстановочный знак. Например:

Spreadsheet (*.xls)|*.xls|Plain-old text (*.txt)|*.txt|Random noise|*.dat

Обратите внимание, что в описании часто используется подстановочный знак в скобках только для целей отображения.

Ваша проблема - символ задней трубы. Удалить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...