考慮這個例子(Ubuntu的14.04,Python的2.7.6,蟒蛇,wxgtk2.8:AMD64 /信賴2.8.12.1):wxPython用於保存文件選取器的錯誤文件對話框?
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瀏覽器的頁面另存爲...提出:
有沒有什麼辦法,我可能會迫使這種對話顯示,在wx.FLP_SAVE wx.FilePickerCtrl的「瀏覽」,當點擊 - 和如果是這樣,怎麼樣?
你嘗試演示:
如果你被卡住的舊版本,那麼你可能會因爲它使用
wx.FileDialog
應該找到以下修改後的代碼是否有幫助?另外,爲什麼不更新wxPython到最新版本? – Igor謝謝@Igor - 我該如何嘗試演示?這是我在這個操作系統上的wxPython版本,我想支持它... – sdaau
請檢查存儲庫 - 它應該包含軟件包列表。某處應該有像wxPython-demo這樣的東西。另外,好奇 - 如果您嘗試運行解釋器併發出「導入wx」,然後出現「wx.FileDialog(.....)」,其中「...」是傳遞給FilePicker的參數會發生什麼? – Igor