0

我一直在玩这个食谱示例,用 wxPython 制作可滚动的 matplotlib 图。但是,当我在工作中的 Windows 7 机器上运行此代码时,滚动条似乎无法正常工作。特别是,如果我单击并将其拖动到某个位置,它确实会更新绘图,但随后滚动条会移回其起始位置,而不是保持原位。我很好奇是否有人知道这里发生了什么。FWIW,当我在家里的 Linux Mint 14 机器上运行这段代码时,它运行良好。

现在,我正在尝试通过使用 wx.ScrolledWindow 或 wx.lib.scrolledpanel 来修复它,而不是像示例中那样将滚动条直接添加到画布上。我也在考虑使用滑块而不是滚动条

谢谢

4

1 回答 1

0

来自Programing Windows,第五版(强调我的)......

在程序中使用滚动条时,您与 Windows 共同负责维护滚动条和更新滚动条拇指的位置。这些是 Windows 对滚动条的职责:

  • 处理鼠标消息到滚动条的所有处理。
  • 当用户单击滚动条时提供反向视频“闪光”。
  • 当用户在滚动条内拖动拇指时移动拇指。
  • 向包含滚动条的窗口的窗口过程发送滚动条消息。

这些是您的程序的职责:

  • 初始化滚动条的范围和位置。
  • 处理滚动条消息到窗口过程。
  • 更新滚动条拇指的位置。
  • 更改客户区的内容以响应滚动条的变化。

...所以在OnScrollEvt()方法的某个地方,您需要SetScrollPos()使用类似...的调用

self.canvas.SetScrollPos(wx.HORIZONTAL, event.GetPosition(), True)
于 2013-06-20T20:29:57.643 回答