【发布时间】:2017-04-07 16:21:48
【问题描述】:
考虑这个例子(Ubuntu 14.04、Python 2.7.6、python-wxgtk2.8:amd64/trusty 2.8.12.1):
import wxversion
wxversion.select("2.8")
import wx, wx.html
import sys
class Frame(wx.Frame):
def __init__(self, *args, **kwds):
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.file_picker_inpdffilepath = wx.FilePickerCtrl(self, wx.ID_ANY, "", "Open PDF file:", "PDF files (*.pdf)|*.pdf", None, None, wx.FLP_DEFAULT_STYLE | wx.FLP_USE_TEXTCTRL)
self.file_picker_outpdffilepath = wx.FilePickerCtrl(self, wx.ID_ANY, "", "Choose output PDF file name:", "PDF files (*.pdf)|*.pdf", None, None, wx.FLP_SAVE | wx.FLP_USE_TEXTCTRL | wx.FLP_OVERWRITE_PROMPT)
sizer_vmain_app = wx.BoxSizer(wx.VERTICAL)
sizer_vmain_app.Add(self.file_picker_inpdffilepath, 1, wx.EXPAND, 0)
sizer_vmain_app.Add(self.file_picker_outpdffilepath, 1, wx.EXPAND, 0)
self.SetSizer(sizer_vmain_app)
self.Layout()
if __name__ == "__main__":
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
app_frame = Frame(None, wx.ID_ANY, "")
app.SetTopWindow(app_frame)
app_frame.Show()
app.MainLoop()
这里我有两个文件选择器,一个应该用于文件加载(wx.FLP_LOAD,默认样式的一部分),另一个用于保存(wx.FLP_SAVE)。当我运行它时,我得到:
然后我点击“(否...”按钮,我得到这个文件打开对话框:
... 这已经足够了。但是,当我单击“浏览”按钮时,应该会弹出系统对话框以保存文件 - 它会弹出与加载完全相同的对话框(无论我是否使用 wx.FLP_USE_TEXTCTRL)!我所期望的是一个文件对话框,它有一个文本输入小部件(所以你可以选择,然后即时重命名),就像 Firefox 的 Save Page As... 提出的那样:
当单击 wx.FLP_SAVE wx.FilePickerCtrl 的“浏览”时,有什么方法可以强制显示这种对话框 - 如果是,如何?
【问题讨论】:
-
您尝试过演示吗?还有,为什么不把 wxPython 更新到最新版本呢?
-
谢谢@Igor - 我如何尝试演示?这是我在这个操作系统上的 wxPython 版本,我想支持它...
-
请检查存储库 - 它应该包含软件包列表。某处应该有类似 wxPython-demo 的东西。另外,很好奇 - 如果您尝试运行解释器并发出“import wx”然后发出“wx.FileDialog(.....)”,其中“...”是您传递给 FilePicker 的参数,会发生什么?跨度>
-
感谢@Igor,将查看演示...另外,我尝试在 Frame 构造函数中添加
fdlg = wx.FileDialog(self, "Input setting file path", "", "", "CSV files(*.csv)|*.*", wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)作为最后一行,确实,该对话框没问题...一定是一个错误在这个版本的wxWidgets中(我查了wx-2.8-gtk2-unicode/wx/_controls.py的代码,FilePickerCtrl的Python代码和FileDialog没有直接关系...)