Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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中如何在ScrollPanel内折叠PanelBar?_Python_Wxpython_Wxwidgets - Fatal编程技术网

在wxPython中如何在ScrollPanel内折叠PanelBar?

在wxPython中如何在ScrollPanel内折叠PanelBar?,python,wxpython,wxwidgets,Python,Wxpython,Wxwidgets,我试着在滚动面板内做一个可折叠的折叠面板。但它并没有加载折叠面板的内容。折叠面板内的列表控件UI甚至没有加载。我试着用常规面板替换,但结果是一样的。如果我遗漏了什么,请告诉我好吗 import wx from wx.lib import scrolledpanel import wx.lib.agw.foldpanelbar as fpb class MyPanel(wx.lib.scrolledpanel.ScrolledPanel): def __init__(self, par

我试着在滚动面板内做一个可折叠的折叠面板。但它并没有加载折叠面板的内容。折叠面板内的列表控件UI甚至没有加载。我试着用常规面板替换,但结果是一样的。如果我遗漏了什么,请告诉我好吗

import wx
from wx.lib import scrolledpanel
import wx.lib.agw.foldpanelbar as fpb

class MyPanel(wx.lib.scrolledpanel.ScrolledPanel):

    def __init__(self, parent):
        wx.lib.scrolledpanel.ScrolledPanel.__init__(self, parent=parent, size=parent.GetSize(), style = wx.ALL|wx.EXPAND)
        self.SetAutoLayout(1)
        self.SetupScrolling()

        csStyle = fpb.CaptionBarStyle()
        csStyle.SetFirstColour(wx.Colour(190, 190, 190, 255))
        csStyle.SetSecondColour(wx.Colour(167, 232, 146, 255))
        csStyle.SetCaptionFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD))

        m_pnl = fpb.FoldPanelBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize,
                            fpb.FPB_VERTICAL)

        item = m_pnl.AddFoldPanel("Set 1", collapsed=True, cbstyle=csStyle)

        self.listContainer = wx.ListCtrl(item)
        self.listContainer.InsertColumn(0, 'Column1', width=250)
        self.listContainer.InsertColumn(1, 'Column2', width=150)
        self.listContainer.InsertColumn(2, 'Column3')

        m_pnl.AddFoldPanelWindow(item, self.listContainer)
        btnGo = wx.Button(item, wx.ID_ANY, "Go", size=(50,-1))
        m_pnl.AddFoldPanelWindow(item, btnGo)

        item = m_pnl.AddFoldPanel("Set 2", collapsed=True, cbstyle=csStyle)
        self.listContainer2 = wx.ListCtrl(item, style=wx.LC_REPORT)
        self.listContainer2.InsertColumn(0, 'Column1', width=250)
        self.listContainer2.InsertColumn(1, 'Column2', width=150)
        self.listContainer2.InsertColumn(2, 'Column3')

        m_pnl.AddFoldPanelWindow(item, self.listContainer2)

        self.pnl = m_pnl


if __name__ == '__main__':
    app = wx.App(False)
    frame = wx.Frame(None, size=(650, 400), style=wx.DEFAULT_FRAME_STYLE)
    panel = MyPanel(frame)
    frame.Show()
    app.MainLoop()

我认为你的例子有两个问题。首先,列将不会在
wx.ListCtrl
的正常列表模式下显示。按如下方式设置
LC\u报告
样式:

    self.listContainer = wx.ListCtrl(item, style=wx.LC_REPORT)
其次,此处没有适当的布局/大小调整

# ...
panel = MyPanel(frame)
# Add sizer information for the scrolled panel
szmain = wx.BoxSizer(wx.VERTICAL)
szmain.Add(panel.pnl, 1, wx.EXPAND|wx.ALL, 4)
panel.SetSizer(szmain)

通过在wxPython classic 3.0.2(MSW)上应用这些更改,至少可以对控件进行布局,使其填充框架。

我发现您的示例存在两个问题。首先,列将不会在
wx.ListCtrl
的正常列表模式下显示。按如下方式设置
LC\u报告
样式:

    self.listContainer = wx.ListCtrl(item, style=wx.LC_REPORT)
其次,此处没有适当的布局/大小调整

# ...
panel = MyPanel(frame)
# Add sizer information for the scrolled panel
szmain = wx.BoxSizer(wx.VERTICAL)
szmain.Add(panel.pnl, 1, wx.EXPAND|wx.ALL, 4)
panel.SetSizer(szmain)

通过在wxPython classic 3.0.2(MSW)上应用这些更改,至少可以对控件进行布局,从而填充整个框架。

谢谢!就是这样:)列表控件出现了,但是当我调整框架大小时,滚动条没有显示。是的,我也看到了(没有滚动条)。由于我既不使用
滚动面板
也不使用
折叠面板
我在这方面没有帮助。也许最好不要把它们混在一起,因为它们通过不同的方式达到了相同的效果(处理窗口中的有限空间)?本质上是面板中的面板。奇怪的是它不起作用。谢谢!就是这样:)列表控件出现了,但是当我调整框架大小时,滚动条没有显示。是的,我也看到了(没有滚动条)。由于我既不使用
滚动面板
也不使用
折叠面板
我在这方面没有帮助。也许最好不要把它们混在一起,因为它们通过不同的方式达到了相同的效果(处理窗口中的有限空间)?本质上是面板中的面板。奇怪的是它不起作用。