2011-11-09 17 views
3

這裏下面的代碼:wxPython的保存文件對話框給出了一個GTK警告

#!/usr/bin/env python 

import wx 

class MyForm(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, 
          "File and Folder Dialogs Tutorial") 
     panel = wx.Panel(self, wx.ID_ANY) 

     saveFileDlgBtn = wx.Button(panel, label="Show SAVE FileDialog") 
     saveFileDlgBtn.Bind(wx.EVT_BUTTON, self.onSaveFile) 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     sizer.Add(saveFileDlgBtn, 0, wx.ALL|wx.CENTER, 5) 
     panel.SetSizer(sizer) 



    def onSaveFile(self, event): 
     """ 
     Create and show the Save FileDialog 
     """ 
     dlg = wx.FileDialog(
      self, message="Save file as ...", 
      defaultDir=".", 
      defaultFile="", wildcard="*.*", style=wx.SAVE 
      ) 
     if dlg.ShowModal() == wx.ID_OK: 
      path = dlg.GetPath() 
      print path 
      fp = open(path, 'w') 
      fp.write("bau bau") 
      fp.close() 

     dlg.Destroy() 


if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MyForm() 
    frame.Show() 
    app.MainLoop() 

給我的終端上出現以下消息時,我嘗試通過文件對話框給人一種新名稱的test.txt保存文件小工具:

(python:16795): Gtk-WARNING **: Unable to retrieve the file info for `file:///home/roberto/python/test.txt': Error stating file '/home/roberto/python/test.txt': No such file or directory 

儘管這樣的消息,該文件被正確保存,但我想明白爲什麼會出現消息,以及如何避免它。這是依賴於我的系統中安裝的gtk庫嗎?我正在使用gtk版本2.24和python-wxgtk2.8進行debian測試。

非常感謝。

羅伯託

+0

Doc建議wx.FD_SAVE不是wx.SAVE。 http://www.wxpython.org/docs/api/wx.FileDialog-class.html – AndrewStone

+0

感謝您的改進,儘管這不會影響gtk警告。河 – robelix

回答

2

我讀過一些在Linux上的wxPython發行版已經調試啓用,這是偉大的知道爲什麼不順心的事,但它也顯示了所有GTK警告。這聽起來像是正確保存文件,所以你可能不需要擔心它。您可以在wxPython郵件列表上詢問更多的技術說明。

+0

你可能是對的,我在不同的系統(ubuntu機器)上試過相同的代碼,並且沒有警告出現......我唯一的疑問是我正在開發一個GUI軟件,它將被最終用戶使用,所以我想以防止任何可能的混淆消息,當他們將運行應用程序...謝謝!河 – robelix

+0

那麼,當你打包時,不要使用wx的調試版本 –

+0

是否有一個開關可以設置在某處以避免這種情況,還是這意味着重建庫? –

0

也許Gtk默認驗證文件是否已經存在,這樣它就不會被直接覆蓋。