我有一个 wx.ScrolledWindow 用于在其中显示图像。我设置了鼠标和键盘事件,以便当用户按住空格键并拖动鼠标时,ScrolledWindow 应该随着鼠标移动而移动,显示图像的不同部分。我可以让 ScrolledWindow 向上和向左滚动,但不能向右或向下滚动。这是一个奇怪的错误,我无法弄清楚。有没有人有任何想法?
以下代码应将 Scrollbar 增加或减少 1。我通过查找 Scrollbar 的初始位置(init_pos_x 和 init_pos_y)然后使用 Scroll(x, y) 方法更新位置来做到这一点。
我通过使用(我认为这可能是问题)获得了初始坐标:
init_pos_x, init_pos_y = self.scroll.GetViewStart()
previous_x 和 previous_y 是用户鼠标的先前位置。x 和 y 是用户鼠标的新位置。
if self.previous_y < y: # Scroll up (user drags down)
self.scroll.Scroll(init_pos_x, init_pos_y - 1)
elif self.previous_y > y: # Scroll down (user drags up)
self.scroll.Scroll(init_pos_x, init_pos_y + 1)
elif self.previous_x < x: # Scroll left (user drags right)
self.scroll.Scroll(init_pos_x - 1, init_pos_y)
elif self.previous_x > x: # Scroll right (user drags left)
self.scroll.Scroll(init_pos_x + 1, init_pos_y)
重申一下,这仅适用于向上滚动和向左滚动。是否有任何理由该方法不适用于向下滚动和向右滚动?
编辑:向下滚动和向右滚动的条件正在执行,但它什么也没做。
谢谢