Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxPython导航面板(如Finder(MacOSX)、Nautilus(Ubuntu)、Explorer(Windows7))_Python_Navigation_Wxpython - Fatal编程技术网

wxPython导航面板(如Finder(MacOSX)、Nautilus(Ubuntu)、Explorer(Windows7))

wxPython导航面板(如Finder(MacOSX)、Nautilus(Ubuntu)、Explorer(Windows7)),python,navigation,wxpython,Python,Navigation,Wxpython,我的问题很简单,如何制作一个类似于 查找器(Mac OS X) 浏览器(Windows 7) 鹦鹉螺(Ubuntu) 至于使用不起作用的wx.TreeCtrl 范例 正如您所看到的,第一个问题是左侧有一个巨大的粉红色条带,您无法删除它,第二个问题是在根上,否则您必须为隐藏的缓冲区添加更多的缓冲区,第二个问题是乱七八糟的,第三个问题与三个示例中的任何一个都不一样 那么,如何获得类似于上述示例的导航面板(除了tree-ctrl示例:p) ==更新===== 在Windows(至少Window

我的问题很简单,如何制作一个类似于 查找器(Mac OS X)

浏览器(Windows 7)

鹦鹉螺(Ubuntu)

至于使用不起作用的wx.TreeCtrl

范例

正如您所看到的,第一个问题是左侧有一个巨大的粉红色条带,您无法删除它,第二个问题是在根上,否则您必须为隐藏的缓冲区添加更多的缓冲区,第二个问题是乱七八糟的,第三个问题与三个示例中的任何一个都不一样

那么,如何获得类似于上述示例的导航面板(除了tree-ctrl示例:p)

==更新=====

在Windows(至少Windows 7)上,左侧有白色列没有问题

可能是在Linux和MacOS X上,tree ctrl小部件通常是绘制的。。。如果有人可以在MacOS X上运行上面的示例,并查看树ctrl的左侧是否有一个粉红色列(粉红色,因为示例将其设置为背景色)

==更新2===== 以iTunes为例

这似乎有点误解,我要找的不是文件管理器文件夹视图,而是导航面板侧

例如,iTunes也有这个功能,但不是一个文件管理器。它们都有一个功能,左侧有一堆可点击的“标签”,用于导航(例如,iTunes中有音乐、电影、电视节目、有声读物、应用程序,都在library下)

还有一个问题是树ctrl在Linux上不起作用(参见下图) 尝试使用

更新:


或者,试着用它做一些事情。在演示套件中查看它的演示,这取决于您实际需要什么,可能就足够了。如果没有,您可以从头开始创建自己的目录。

如果您真的想要浏览目录结构:

import os
import wx

class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.panel = wx.Panel(self)
        self.dir = wx.GenericDirCtrl(self.panel, size=(200, -1), style=wx.DIRCTRL_DIR_ONLY)
        self.files = wx.ListCtrl(self.panel, style=wx.LC_LIST)

        self.sizer = wx.BoxSizer()
        self.sizer.Add(self.dir, flag=wx.EXPAND)
        self.sizer.Add(self.files, proportion=1, flag=wx.EXPAND)

        self.border = wx.BoxSizer()
        self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5)

        self.panel.SetSizerAndFit(self.border)  
        self.Show()

        self.dir.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelect)


    def OnSelect(self, e):
        self.files.ClearAll()
        list = os.listdir(self.dir.GetPath())
        for a in reversed(list):
            self.files.InsertStringItem(0, a)


app = wx.App(False)
win = MainWindow(None, size=(600, 400))
app.MainLoop()
以下是一些有用的例子:

如果你只是想要类似的小部件,看看。它可能不是你想要的100%,但是wxpython中有这个小部件的源代码,所以你可以修改它以满足你的需要

import wx
import wx.lib.agw.customtreectrl as CT

class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.panel = wx.Panel(self)
        self.dir = CT.CustomTreeCtrl(self.panel, size=(100, -1), 
                                     style=wx.SUNKEN_BORDER,
                                     agwStyle=CT.TR_FULL_ROW_HIGHLIGHT | CT.TR_HIDE_ROOT | CT.TR_NO_LINES | CT.TR_ROW_LINES)           

        root = self.dir.AddRoot("The Root Item")
        child = self.dir.AppendItem(root, "Test")
        child = self.dir.AppendItem(child, "Test 2")
        child = self.dir.AppendItem(child, "Test 3")
        child = self.dir.AppendItem(root, "Test 4")

        self.dir.ExpandAll()

        self.sizer = wx.BoxSizer()
        self.sizer.Add(self.dir, proportion=1, flag=wx.EXPAND)

        self.border = wx.BoxSizer()
        self.border.Add(self.sizer, 1, wx.ALL | wx.EXPAND, 5)

        self.panel.SetSizerAndFit(self.border)  
        self.Show()


app = wx.App(False)
win = MainWindow(None, size=(200, 300))
app.MainLoop()

应用TR_TWIST_按钮样式的超级卷轴列表控件如何?这将使它看起来更像苹果finder。它也是纯python的,并且比普通的TreeCtrl更容易破解。如果需要Windows资源管理器外观,可能需要查看ListCtrl、ObjectListView或UltimateListCtrl。wxPython演示中有所有这些的演示(ObjectListView除外,因为它不包含在wxPython中)。

导航部分使用树ctrl,因此仍然存在树ctrl和左侧空像素的相同问题没有真正的答案,但你的确实给了我一些想法,很遗憾,没有人回答这个问题哦。。。