wxPython 2.8.10,Python 2.6.2,Windows 7 x64
所以我有一点wxPython问题,我希望有人能说出错的地方。在我的应用程序中,我有滑块,当你移动滑块时,背景颜色会发生变化。我是通过一个EVT_SLIDER处理程序中的SetBackgroundColour来完成的。它主要起作用,但我最终在小部件的外边缘周围有一个颜色不变的边框。
我已经尝试刷新链条,顶层的RefreshRect框架周围的框架(以及更远的几个像素),Update和Layout的各种组合,但似乎没有任何东西可以擦除它。我管理的最好的是如果我使用类似的东西:
frame = wx.GetTopLevelParent(slider)
rect = slider.GetRect()
slider.ClearBackground()
slider.SetBackgroundColour(wx.Colour(red,green,blue))
frame.RefreshRect(rect)
它将使用新颜色正确绘制背景框而不会出现边框问题,但它不会重新绘制滑块本身。
但是,如果我点击它以使焦点位于其他地方,则边框会捕捉到新颜色。
我可能会使用叠加或自定义绘画功能,但我希望我在这里找不到能让我获得理想结果的东西。
有什么建议吗?
(编辑添加) 看起来像手动调整窗口大小来纠正问题,但Layout()没有。
如果使用客户端大小技巧,它也可以正常运行:
w,h = slider.GetClientSize()
slider.SetClientSize( (w+1,h) )
slider.SetClientSize( (w,h) )