在wxPython应用程序中,第二个面板没有显示出来。

3
我想将两个面板横向放置在另一个面板上,但第二个面板没有显示出来:
import wx

szflags = wx.EXPAND | wx.ALL
min_height = 50
height_ratio = 4
pborder = 10
lborder = 5
    class ChartPanel(wx.Panel):

        def __init__(self, *args, **kwargs):
            wx.Panel.__init__(self, *args, **kwargs)
            self.SetBackgroundColour(wx.Colour(226,226,226))

            self.st = wx.StaticText(self, label='CHART PANEL')
            #self.chart = bar_line.CanvasPanel(self, "320")

            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(self.st, 1 , szflags , lborder)
            #sizer.Add(self.chart, 1 , szflags)
            self.SetSizer(sizer)


    class NotebookPage(wx.Panel):

        def __init__(self, *args, **kwargs):
            fleet = kwargs.pop('fleet_name', None)
            wx.Panel.__init__(self, *args, **kwargs)


            self.mainPanel = NotebookPage_MainPanel(self, name='Notebook_Page_MainPanel', fleet_name=fleet)
            self.chartPanel = ChartPanel(self, name='Notebook_Page_ChartPanel')

            sizer = wx.BoxSizer(wx.HORIZONTAL)
            sizer.Add(self.mainPanel, 1, wx.EXPAND|wx.ALL,border=10)
            sizer.Add(self.chartPanel, 1, wx.EXPAND|wx.ALL,border=10)
            self.SetSizer(sizer)

这里的ChartPanel没有显示出来。上面有什么问题?

不确定,但您可能需要执行“刷新”和/或“Fit” / “FitInside”操作以使Sizer重新计算大小。 - Corley Brigman
当我查看小部件检查工具时,它显示父面板大小为(892,440),第二个面板的位置是(902,10)。您认为这是一个问题吗? - alwbtc
看起来没问题。你实际上看到了什么?(我无法尝试,因为notebookpage_mainpanel的源代码不在那里) - Corley Brigman
请提供一个可运行的小示例应用程序,以便我们尝试帮助您。同时知道您使用的操作系统、wx和Python版本也很重要。 - Mike Driscoll
1个回答

2

实际上,您需要创建一个父面板,并将您的两个面板添加到其中。

创建主面板,其中包含两个子面板,即您的笔记本页面和图表面板。

    class NotebookPage(wx.Panel):

    def __init__(self, *args, **kwargs):
        fleet = kwargs.pop('fleet_name', None)
        wx.Panel.__init__(self, *args, **kwargs)

        self.masterPanel=wx.Panel(self,-1)
        self.mainPanel = NotebookPage_MainPanel(self.masterpanel, name='Notebook_Page_MainPanel', fleet_name=fleet)
        self.chartPanel = ChartPanel(self.masterpanel, name='Notebook_Page_ChartPanel')

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(self.mainPanel, 1, wx.EXPAND|wx.ALL,border=10)
        sizer.Add(self.chartPanel, 1, wx.EXPAND|wx.ALL,border=10)
        self.SetSizer(sizer)

您可以查看此链接以获取参考:link 其次,他实现了相同的多个面板:link

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接