我正在创建一个文件对话框,允许用户在我的应用中编辑后保存文件。我想在对话框中添加一个复选框,以便用户可以选择保存文件的格式。我想我需要创建一个继承自FileDialog的新类,并在由filedialog创建的框架中插入一个复选框,但我真的不知道该怎么做。任何人都可以帮助我吗?
(我还想创建一个用于打开文件的类似文件对话框,但我认为这只是意味着用OPEN样式替换SAVE样式。)
答案 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 (*.*)|*.*"
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
功能。