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

如何在wxpython中向文件对话框添加小部件?,wxpython,wxwidgets,openfiledialog,savefiledialog,filedialog,Wxpython,Wxwidgets,Openfiledialog,Savefiledialog,Filedialog,我正在创建一个文件对话框,允许用户在我的应用程序中编辑文件后保存它。我想在对话框中添加一个复选框,以便用户可以选择文件的保存格式。我想我需要创建一些从FileDialog继承的新类,并在FileDialog创建的框架中插入一个复选框,但我真的不知道怎么做。有人能帮我吗 (我还想创建一个类似的文件对话框来打开一个文件,但我认为这只意味着将保存样式替换为打开样式。)我认为您在这方面走错了方向。一般来说,额外的小部件不需要添加到标准对话框中(如果可以的话,它们就不是标准的) 如果您希望添加wx.Che

我正在创建一个文件对话框,允许用户在我的应用程序中编辑文件后保存它。我想在对话框中添加一个复选框,以便用户可以选择文件的保存格式。我想我需要创建一些从FileDialog继承的新类,并在FileDialog创建的框架中插入一个复选框,但我真的不知道怎么做。有人能帮我吗


(我还想创建一个类似的文件对话框来打开一个文件,但我认为这只意味着将保存样式替换为打开样式。)

我认为您在这方面走错了方向。一般来说,额外的小部件不需要添加到标准对话框中(如果可以的话,它们就不是标准的)

如果您希望添加
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 (*.*)|*.*"

wx.FileDialog文档:


我同意电压。如果需要自定义(非本机)对话框,请使用wx.dialog子类。否则,请按预期的方式使用标准对话框。另见:


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

或者,您可以使用wxFileCtrl类。它只有wxGTK中的本机实现


不过,我不知道Python包装器是否提供了这些功能。

我不同意这样的观点,即您应该只使用标准对话框的设计方式

我持另一种观点,更愿意以子类化的方式使用子类化。对我来说,这是向类添加额外的功能/专门化

因此,它不会改变标准对话框的行为。它是在标准对话框的基础上创建一个新对话框,并带有一些附加功能


在我的例子中,我想在
wx.MultiChoiceDialog
中添加两个按钮,以提供
Select All
和/或
Unselect All
功能。

您所写的关于添加额外小部件的内容在大多数现代平台上都是不正确的。Windows、GTK、Qt和我认为Carbon和Cocoa也支持在文件对话框中添加额外的小部件。它也在几年前在wxWidgets中实现,作为googlesummerofcode项目的一部分。