如何使wxpython PropertyGrid DirProperty在osx上提供新文件夹

时间:2012-09-27 12:36:46

标签: wxpython

使用wxpython,我使用wxpg.DirPropery元素实例化wxpg.PropertyGrid:

#http://wxpropgrid.sourceforge.net/cgi-bin/index
import wx.propgrid as wxpg

#...

    this_backup = wxpg.PropertyGrid(self._mainDisplay, wx.NewId(), 
                                    style = wxpg.PG_SPLITTER_AUTO_CENTER) 
    this_backup.Bind( wxpg.EVT_PG_CHANGED, self.OnBackupGridChange )

    this_backup.Append( wxpg.DirProperty("Backup Root",value=backup['Backup Root']))

在Windows下,当这段代码运行时,我按下dir属性条目的“浏览”省略号,我得到一个对话框,允许我创建一个新目录作为选择。

但是,在osx 10.8.2下,似乎无法在同一个对话框中创建新目录。

如何让osx使用对话框进行选择,提供“新文件夹”作为选项之一?

谢谢!

1 个答案:

答案 0 :(得分:1)

它在wxPython演示中有效吗?查看演示代码,看起来它会覆盖OnEvent方法以显示wx.DirDialog。如果这不起作用,那么Mac的本机对话框可能不允许这种功能。

当然,由于您要覆盖事件,您可以使用您选择的任何对话框,因此您可以切换到使用MultiDirDialog(wx.lib.agw.multidirdialog)。它是一个纯Python小部件,所以应该可以工作。

编辑(10/15/12):

在我的wxPython 2.9 Demo中,我有以下事件处理程序:

def OnEvent(self, propgrid, primaryEditor, event):
    if event.GetEventType() == wx.wxEVT_COMMAND_BUTTON_CLICKED:
        dlg = wx.DirDialog(propgrid,
                           _("Select a directory to be added to "
                             "the list:"))

        if dlg.ShowModal() == wx.ID_OK:
            new_path = dlg.GetPath()
            old_value = self.m_value
            if old_value:
                new_value = list(old_value)
                new_value.append(new_path)
            else:
                new_value = [new_path]
            self.SetValueInEvent(new_value)
            retval = True
        else:
            retval = False

        dlg.Destroy()
        return retval

    return False

对我而言,看起来像演示创建者完全摆脱了OnEvent方法。