我在从菜单项调用后创建了一个 WxPython notebook,但不幸的是它没有正确呈现(只能看到角落里的一个小蓝色形状)。我必须手动调整窗口大小,它会像第二张图片一样弹回工作状态。
代码:
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()
在主目录和笔记本和面板所在的文件夹中。
使用
所以经过一些调整和使用 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()
我遇到了同样的问题,如果调整窗口大小,组合框只会进入它的位置,但发布的解决方案对我不起作用。我通过创建一个简单地为您调整窗口大小的函数来解决这个问题:
def forceRefresh(self):
self.SetSize((self.GetSize().width, self.GetSize().height+1))
self.SetSize((self.GetSize().width, self.GetSize().height-1))
虽然不是最佳的,但它为我完成了技巧,所以希望它可以帮助其他人。
虽然这个问题很老,但我遇到了类似的问题:在我使用鼠标调整框架大小之前,笔记本中的页面布局一团糟。然后就好了。最终,我意识到简单的答案是在启动期间强制执行它。在我拥有所有启动代码的 OnInit 回调中,添加:
w,h = mainframe.GetSize()
mainframe.SetSize((w+1,h-1))
mainframe.SetSize((w,h))
就在返回 True 之前。现在一切正常。奇怪什么的。