我一直在玩这个cookbook example来制作一个带有wxPython的可滚动matplotlib图。但是,当我在工作时在我的Windows 7机器上运行此代码时,滚动条似乎无法正常工作。特别是,如果我单击并将其拖动到某个位置,它会更新绘图,但滚动条会移回其起始位置,而不是保持放置。如果有人知道这里发生了什么,我很好奇。 FWIW,当我在家里的Linux Mint 14机器上运行它时,这段代码运行正常。
现在,我正在尝试通过使用wx.ScrolledWindow或wx.lib.scrolledpanel来修复它,而不是像示例中那样直接将滚动条添加到画布。我还在考虑使用滑块而不是滚动条
谢谢
答案 0 :(得分:0)
来自Programing Windows, Fifth Edition(强调我的)......
在程序中使用滚动条时,您将分担责任 用Windows维护滚动条并更新位置 滚动条拇指。这些是Windows的责任 滚动条:
- 处理鼠标消息的所有处理到滚动条。
- 当用户点击滚动条时,提供反向视频“闪光”。
- 当用户在滚动条中拖动拇指时移动拇指。
- 将滚动条消息发送到包含滚动条的窗口的窗口过程。
这些是您的计划的责任:
- 初始化滚动条的范围和位置。
- 将滚动条消息处理为窗口过程。
- 更新滚动条缩略图的位置。
- 更改客户区的内容以响应滚动条的更改。
...所以在OnScrollEvt()
方法的某个地方,您需要调用SetScrollPos()
,例如......
self.canvas.SetScrollPos(wx.HORIZONTAL, event.GetPosition(), True)