3

Я создаю диалоговое окно файла, которое позволяет пользователю сохранять файл после его редактирования в моем приложении. Я хочу добавить галочку в диалоговом окне, чтобы пользователь мог сделать несколько вариантов того, в каком формате был сохранен файл. Думаю, мне нужно создать новый класс, который наследуется от FileDialog и вставляет флажок в фрейм, созданный filedialog, но я действительно не знаю, как это сделать. Может кто-нибудь мне помочь?Как добавить виджеты в диалог файла в wxpython?

(я также хочу, чтобы создать диалог, аналогичный файл для открытия файла, но я предполагаю, что будет просто означать, заменив стиль СОХРАНИТЬ с открытым стилем.)

ответ

2

Я думаю, что вы собираетесь неправильно об этом , В общем, дополнительные виджеты не добавляются в стандартные диалоги (они бы не были стандартными, если бы могли).

Если вы хотите добавить wx.CheckBox или тому подобное, вам нужно будет создать свой собственный диалог путем подкласса wx.Dialog.

Если все, что вам нужно сделать, это предоставить пользователю возможность фильтрации по типам файлов, которые нужно открыть, или выбрать, какой тип файла должен быть сохранен как, тогда эта функциональность готова к использованию через wx .FileDialog.

С помощью подстановочного параметра при создании экземпляра вашего файлаDialog вы можете предоставить группу типов файлов для пользователя на выбор.

Вот фрагмент от wxPython Demo и скриншот для иллюстрации. wxPython Demo - очень полезное приложение, которое предоставляет демонстрации самых виджетов, включенных в wxPython, достойную загрузку, если у вас ее еще нет.

wildcard = "Python source (*.py)|*.py|"  \ 
      "Compiled Python (*.pyc)|*.pyc|" \ 
      "SPAM files (*.spam)|*.spam|" \ 
      "Egg file (*.egg)|*.egg|"  \ 
      "All files (*.*)|*.*" 

alt text

wx.FileDialog Документация:

http://wxpython.org/docs/api/wx.FileDialog-class.html

http://xoomer.virgilio.it/infinity77/wxPython/Widgets/wx.FileDialog.html

+0

Что вы написали о добавлении дополнительных виджетов, не соответствует действительности на большинстве современных платформ. Windows, GTK, Qt, и я думаю, что поддержка Carbon и Cocoa добавляет дополнительные виджеты в диалоговые окна файлов. Он также был реализован в wxWidgets несколько лет назад в рамках одного из проектов Google Summer of Code. – marcin

2

Я согласен с volting. Если вам нужен пользовательский (не родной) диалог, подкласс wx.Dialog. В противном случае используйте стандартные диалоги так, как они должны использоваться. Смотрите также:

http://www.blog.pythonlibrary.org/2010/06/26/the-dialogs-of-wxpython-part-1-of-2/

http://www.blog.pythonlibrary.org/2010/07/10/the-dialogs-of-wxpython-part-2-of-2/

3

В WxWidgets 2,9 пользовательские элементы управления могут быть добавлены в файл с помощью диалоговых окон wxFileDialog :: SetExtraControlCreator(). Он реализован для GTK, MSW и общих диалогов.

В качестве альтернативы вы можете использовать класс wxFileCtrl. Он имеет встроенную реализацию только в wxGTK.

Я не знаю, доступны ли эти функции в оболочках Python.

1

Я должен не соглашаться с тем, что вы должны использовать стандартные диалоги только, как они были разработаны.

Я беру другой взгляд и предпочел бы использовать подклассы, как это было предусмотрено в подклассе.И для меня это добавляет дополнительную функциональность/специализацию в класс.

Поэтому он не меняет поведение стандартного диалога. Он создает новый диалог, основанный на стандартном диалоге, с небольшой дополнительной функциональностью.

В моем случае я хочу добавить две кнопки в wx.MultiChoiceDialog, чтобы предоставить функции Select All и/или Unselect All.