0

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では、同じダイアログで新しいディレクトリを作成する方法はないようです。

オプションの1つとして「新しいフォルダ」を提供するディレクトリ選択のダイアログを使用するようにosxを説得するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

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 メソッドを削除したように見えます。

于 2012-09-28T17:37:17.580 に答える