使用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使用对话框进行选择,提供“新文件夹”作为选项之一?
谢谢!
答案 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方法。