如何设置 GenericDirCtrl 以在 wxpython 中将自定义文件夹显示为顶级目录?
How to set the GenericDirCtrl to show custom folder as top directory in wxpython?
我想在 wxPython 的 GenericDirCtrl 组件中将我的文件夹显示为顶级目录。我在我的代码中尝试了 SetPath() 和路径,但它只关注选定的文件夹,而不是使其成为树的顶部。
在我的表单构造函数中,我是这样创建的:
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)
然后我尝试使用配置文件中的工作目录更改顶级目录:
if self.config.workdir != "":
# self.folder_tree_project.SetPath(self.config.workdir)
# self.folder_tree_project.Path=self.config.workdir
两者都只专注。不更改顶级目录。
有什么方法或者属性可以处理吗?
您可以使用 wx.GenericDirList GetTreeCtrl() function to get the pointer to its wx.TreeCtrl attribute, and then use the 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)
我想在 wxPython 的 GenericDirCtrl 组件中将我的文件夹显示为顶级目录。我在我的代码中尝试了 SetPath() 和路径,但它只关注选定的文件夹,而不是使其成为树的顶部。
在我的表单构造函数中,我是这样创建的:
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)
然后我尝试使用配置文件中的工作目录更改顶级目录:
if self.config.workdir != "":
# self.folder_tree_project.SetPath(self.config.workdir)
# self.folder_tree_project.Path=self.config.workdir
两者都只专注。不更改顶级目录。
有什么方法或者属性可以处理吗?
您可以使用 wx.GenericDirList GetTreeCtrl() function to get the pointer to its wx.TreeCtrl attribute, and then use the 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)