【问题标题】:Grid and Sizers in wxPythonwxPython 中的网格和 Sizer
【发布时间】:2012-04-22 20:27:56
【问题描述】:

所以我在 wxPython 中遇到了 Grid 和 Sizer 的问题,如果我包含此表,格式似乎会以某种方式混乱,整个窗口似乎具有正确的大小,并且项目出现在正确的位置。

但是当这张桌子被包括在内时,我猜是面板的内部浅灰色? 但是由于这个深灰色字段,表格下方的项目被隐藏了

删除 setcolsize 调用也不能解决问题

感谢任何回复

    wx.Frame.__init__(self, parent, title=title)
    panel = wx.Panel(self)

    grid = wx.GridBagSizer(hgap=5, vgap=5)
    #  some other items comes before this
    # FileGrid
    fileF = wx.grid.Grid(panel)
    fileF.CreateGrid(2,3)
    fileF.SetColLabelSize(0)
    fileF.SetRowLabelSize(0)

    fileF.SetCellValue(0, 0, "Old")
    fileF.SetCellValue(0, 1, "New")
    fileF.SetCellValue(0, 2, "Update?")

    grid.Add(fileF, pos=(5,0))
    # FileGrid end

    runBtn = wx.Button(panel, wx.ID_APPLY, "Apply")
    self.Bind(wx.EVT_BUTTON, self.applyScRen, runBtn)
    grid.Add(runBtn, pos=(6,0))

    self.SetSizerAndFit(grid)

【问题讨论】:

    标签: python user-interface wxpython


    【解决方案1】:

    您没有提供完整的框架结构,但这应该能让您走上正轨。

    将最后一行改为:

    panel.SetSizerAndFit(grid)
    

    这已经改善了问题。 sizer 的容器是 panel,而它又包含在 frame 中。

    编辑

    这个pastebin 有完整的工作版本。它会生成此图像,然后是我对您的代码所做的关键更改:

        #panel.CreateStatusBar()
        vSizer.Add(grid, 0, wx.ALL, 5)
        panel.SetSizerAndFit(grid)
        self.CreateStatusBar()
        self.SetInitialSize()
        self.Show(True)
    

    【讨论】:

    • 已经解决了,谢谢,但现在self.CreateStatusBar() 在底部重叠。
    • AttributeError: 'Panel' 对象没有属性 'CreateStatusBar'。框架拥有状态栏,就像菜单一样,据我所知
    • 能把上面问题的全帧代码发过来吗?拆面板可能和中介一样有效?
    猜你喜欢
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2013-08-01
    • 2015-10-25
    相关资源
    最近更新 更多