2016-04-26 2 views
0

wxPythonのGenericDirCtrlコンポーネントのトップディレクトリにフォルダを表示します。私はSetPath()とパスを自分のコードにしようとしましたが、選択したフォルダだけをツリーの先頭にしません。私はそのようにそれを作成する私のフォームのコンストラクタでGenericDirCtrlを設定してカスタムフォルダをwxpythonのトップディレクトリとして表示するには?

self.folder_tree_project = wx.GenericDirCtrl(self.pnl_edit, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(200, -1), wx.DIRCTRL_3D_INTERNAL | wx.SUNKEN_BORDER, wx.EmptyString, 0) 

self.folder_tree_project.ShowHidden(False) 
bSizer5.Add(self.folder_tree_project, 0, wx.ALL | wx.EXPAND, 5) 

、その後、私は私のconfigファイルでの作業ディレクトリを使用して、トップディレクトリを変更しようとしています:

if self.config.workdir != "": 
    # self.folder_tree_project.SetPath(self.config.workdir) 
    # self.folder_tree_project.Path=self.config.workdir 

両方のみ焦点を合わせる。トップディレクトリを変更しません。

これを処理する方法や属性はありますか?

答えて

1

wx.GenericDirList GetTreeCtrl()関数を使用して、wx.TreeCtrl属性へのポインタを取得し、TreeCtrl.AppendItem()を使用して、ルート項目に必要なディレクトリの名前を追加できます。

ただし、マウスのクリックをバインドし、os.walk(または他の方法で)を使用してディレクトリの子ファイルと子ディレクトリを追加することによって、その機能をコーディングする必要があります。 wx.TreeCtrlポインターを操作しています。

多分、これを行うにはwxpython apiに埋め込まれていますが、ドキュメントには何も見つかりませんでした。とにかくここ

はwx.TreeCtrlポインタにディレクトリ名を追加するためのコードです:

DirectoryNameHere = "mypath" 
    Bsizer = wx.BoxSizer(wx.VERTICAL) 
    self.folder_tree_project = wx.GenericDirCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.Size(200, -1), wx.DIRCTRL_3D_INTERNAL | wx.SUNKEN_BORDER, wx.EmptyString, 0) 

    self.folder_tree_project.ShowHidden(False) 
    Tree = self.folder_tree_project.GetTreeCtrl() 
    Tree.AppendItem(Tree.GetRootItem(), DirectoryNameHere) 

    Bsizer.Add(self.folder_tree_project,1,wx.ALL | wx.EXPAND) 
    self.SetSizer(Bsizer) 
+0

私はあなたと同じようにだと思うが、おそらく、このためのプラグインやカスタムウィジェットがあります。そうでなければ、私はそれを書く必要があります:)。そして、これより複雑になるものがあります。作業フォルダは静的ではなく、実行時にユーザーによって変更される可能性があります。とにかくあなたの努力に感謝します。 – obayhan

関連する問題