如何在wxpython中将小部件添加到文件对话框?

时间:2010-11-04 04:07:44

标签: wxpython wxwidgets openfiledialog savefiledialog filedialog

我正在创建一个文件对话框,允许用户在我的应用中编辑后保存文件。我想在对话框中添加一个复选框,以便用户可以选择保存文件的格式。我想我需要创建一个继承自FileDialog的新类,并在由filedialog创建的框架中插入一个复选框,但我真的不知道该怎么做。任何人都可以帮助我吗?

(我还想创建一个用于打开文件的类似文件对话框,但我认为这只是意味着用OPEN样式替换SAVE样式。)

4 个答案:

答案 0 :(得分:2)

在wxWidgets中,可以使用wxFileDialog :: SetExtraControlCreator()将2.9自定义控件添加到文件对话框中。它是为GTK,MSW和通用对话框实现的。

或者,您可以使用wxFileCtrl类。它仅在wxGTK中具有本机实现。

我不知道这些功能是否可以从Python包装器获得。

答案 1 :(得分:1)

我认为你对此有错误的看法。通常,额外的小部件不会被添加到标准对话框中(如果可以的话,它们实际上不是标准的)。

如果你想添加wx.CheckBox之类的东西,你必须通过继承wx.Dialog来创建自己的自定义对话框。

如果您只需要为用户提供按要打开的文件类型进行过滤的方法,或者选择要将文件保存为哪种文件类型,则此功能已全部由wx提供。 FileDialog的。

通过在创建fileDialog实例时使用通配符参数,您可以提供一组文件类型供用户选择。

以下是 wxPython演示的摘录和截图。 wxPython演示是一个非常有用的应用程序,它提供了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

答案 2 :(得分:1)

我同意自愿。如果需要自定义(非本机)对话框,则子类为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 :(得分:1)

我不同意你应该只使用标准对话框的情绪。

我采用另一种观点,而宁愿选择使用子类化子类化的方式。对我来说,它是为一个类添加额外的功能/专业化。

因此它不会改变标准对话框的行为。它正在创建一个基于标准对话框的新对话框,并带有一些额外的功能。

就我而言,我想在wx.MultiChoiceDialog添加两个按钮,以提供Select All和/或Unselect All功能。