这是allocating more size in sizer to wx.CollapsiblePane when expanded的后续内容。在
EDIT:这个问题的答案解决了我最初的问题,即当我展开或折叠窗格时,没有任何东西移动,但是现在我遇到了另一个bug。当物体移动正常时,按钮似乎互相涂抹,如下图所示。鼠标移到一个按钮上似乎会迫使它在混乱的其他部分重新绘制,但它会在后面和周围留下一堆随机的按钮碎片。在
我已经尽了最大努力在一个示例应用程序中复制这个bug,但是我做不到。我只是在这里寻找线索。有人知道是什么导致了下面所示的问题吗?只有在展开和折叠一些上部窗格之后才会发生。在
值得一提的是,下面的代码是为一个看起来非常相似的示例应用程序编写的,但由于某些原因并没有导致相同的问题。编辑也为了它的价值,这里有一个链接到我的项目的GUI的完整源代码,它生成了下面的屏幕截图。http://code.google.com/p/dicom-sr-qi/source/browse/gui/main.py?r=8a876f7b4a034df9747a2c1f2791258f671e44b1
import wx
class SampleSubPanel(wx.Panel):
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(wx.StaticText(self, 1, "A label"))
sizer.Add(wx.SpinCtrl(self))
self.SetSizer(sizer)
class SampleCollapsiblePane(wx.CollapsiblePane):
def __init__(self, *args, **kwargs):
wx.CollapsiblePane.__init__(self,*args,**kwargs)
sizer = wx.BoxSizer(wx.VERTICAL)
for x in range(2):
sizer.Add(wx.CheckBox(self.GetPane(), label = str(x)))
sizer.Add(SampleSubPanel(self.GetPane()))
self.GetPane().SetSizer(sizer)
self.Bind(wx.EVT_COLLAPSIBLEPANE_CHANGED, self.on_change)
def on_change(self, event):
self.GetParent().Layout()
class SampleSubPanel2(wx.Panel):
def __init__(self, *args, **kwargs):
wx.Panel.__init__(self, *args, **kwargs)
sizer = wx.BoxSizer(wx.VERTICAL)
for x in range(2):
sizer.Add(SampleCollapsiblePane(self, label = str(x)), 0)
self.SetSizer(sizer)
class Main_Frame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.main_panel = wx.Panel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(wx.Panel(self.main_panel, style=wx.RAISED_BORDER),1, wx.EXPAND)
sizer.Add(SampleSubPanel2(self.main_panel, style = wx.RAISED_BORDER),2, wx.EXPAND )
sizer.Add(wx.Button(self.main_panel,label= "a button"),0,wx.ALIGN_CENTER)
self.main_panel.SetSizer(sizer)
class SampleApp(wx.App):
def OnInit(self):
frame = Main_Frame(None, title = "Sample App")
frame.Show(True)
frame.Centre()
return True
def main():
app = SampleApp(0)
app.MainLoop()
if __name__ == "__main__":
main()
如果我说得对,您希望这里的代码-allocating more size in sizer to wx.CollapsiblePane when expanded正常工作。它不起作用的原因是您忘记绑定
wx.EVT_COLLAPSIBLEPANE_CHANGED
。这是一个对我有用的密码-编辑:看起来可能是运行在windows上的wxPython中的一个bug。下面的屏幕截图和在Ubuntu上运行的Windows上出现问题的代码完全相同。
相关问题 更多 >
编程相关推荐