WxPython 渲染不正确

问题描述 投票:0回答:3

我在从菜单项调用后创建了一个 WxPython notebook,但不幸的是它没有正确呈现(只能看到角落里的一个小蓝色形状)。我必须手动调整窗口大小,它会像第二张图片一样弹回工作状态。

wrong

correct

代码:

def load_notebook(self):
    panel = wx.Panel(self)
    sizer = wx.BoxSizer(wx.VERTICAL)
    notebook = apps.srp.main.Notebook(panel)
    sizer.Add(notebook, 1, wx.ALL | wx.EXPAND, 5)
    panel.SetSizer(sizer)

我尝试过的事情:

self.Layout()
self.Refresh()
self.Update()
notebook.Layout()
notebook.Refresh()
notebook.Update()

在主目录和笔记本和面板所在的文件夹中。

使用

  • wxPython-凤凰 (3.0.3.dev1820+49a8884)
  • Python 3.4
  • OSX 10.10
python wxpython
3个回答
2
投票

所以经过一些调整和使用 Widget Inspection Tool 的技巧后,确实是容纳笔记本的面板没有根据框架调整大小(假设默认大小我猜是 20x20 像素,这是很小的我看到的蓝点)

解决方案是在添加notebook后添加如下内容:

    sizer_parent = wx.BoxSizer()
    sizer_parent.Add(panel, 1, wx.ALL | wx.EXPAND, 5)
    self.SetSizer(sizer_parent)
    self.Layout()

0
投票

我遇到了同样的问题,如果调整窗口大小,组合框只会进入它的位置,但发布的解决方案对我不起作用。我通过创建一个简单地为您调整窗口大小的函数来解决这个问题:

def forceRefresh(self):
    self.SetSize((self.GetSize().width, self.GetSize().height+1))
    self.SetSize((self.GetSize().width, self.GetSize().height-1))

虽然不是最佳的,但它为我完成了技巧,所以希望它可以帮助其他人。


0
投票

虽然这个问题很老,但我遇到了类似的问题:在我使用鼠标调整框架大小之前,笔记本中的页面布局一团糟。然后就好了。最终,我意识到简单的答案是在启动期间强制执行它。在我拥有所有启动代码的 OnInit 回调中,添加:

w,h = mainframe.GetSize()
mainframe.SetSize((w+1,h-1))
mainframe.SetSize((w,h))

就在返回 True 之前。现在一切正常。奇怪什么的。

© www.soinside.com 2019 - 2024. All rights reserved.