【问题标题】:Second panel does not show up in wxpython application第二个面板没有出现在 wxpython 应用程序中
【发布时间】:2014-04-14 13:26:08
【问题描述】:

我想将 2 个面板并排(水平)放置在另一个面板上,但第二个面板没有显示:

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 不显示。上面有什么问题?

【问题讨论】:

  • 不确定,但您可能需要执行Refresh 和/或Fit/FitInside 以使sizer 重新计算尺寸。
  • 当我查看小部件检查工具时,它说父面板的大小为 (892,440),第二个面板的位置为 (902,10)。你觉得有问题吗??
  • 似乎还可以。你到底看到了什么? (不能自己尝试,因为 notebookpage_mainpanel 的源不存在)
  • 请提供一个可运行的小型示例应用程序,我们可以用它来帮助您。还要知道哪个 OS、wx 和 Python 版本也不错。

标签: python user-interface wxpython


【解决方案1】:

实际上你需要创建一个父面板并将你的两个面板添加到它..

创建主面板,它包含两个孩子,即你的笔记本页面和图表面板

    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

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多