python - GTKAgg 画布和 GTKScrolledWindow 上的滚动事件
问题描述
我正在尝试使用在我的 matplotlib 图中连接滚动事件
canvas.mpl_connect('scroll_event', on_scroll)
这基本上是可行的,但是如果将绘图放置在 GTKScrolledWindow 中,则绘图会对滚动事件做出反应,并且 ScrolledWindow 也会滚动。如何阻止 ScrolledWindow 上的事件?有没有办法抓住它?
import gtk
from matplotlib.figure import Figure
import numpy as np
from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as
FigureCanvas
def main():
win = gtk.Window()
win.connect("destroy", lambda x: gtk.main_quit())
win.set_default_size(400, 400)
win.set_title("Embedding in GTK")
scrolled_window = gtk.ScrolledWindow()
scrolled_window.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS)
win.add(scrolled_window)
vbox = gtk.VBox()
vbox.set_size_request(600,600)
scrolled_window.add_with_viewport(vbox)
fig = Figure(figsize=(5, 4), dpi=100)
ax = fig.add_subplot(111)
t = np.arange(0.0, 3.0, 0.01)
s = np.sin(2*np.pi*t)
ax.plot(t, s)
canvas = FigureCanvas(fig) # a gtk.DrawingArea
vbox.pack_start(canvas)
def on_scroll(event):
print('you scrolled')
canvas.mpl_connect('scroll_event', on_scroll)
win.show_all()
gtk.main()
if __name__ == '__main__':
main()
解决方案
推荐阅读
- spring-cloud - 使用带有 Spring Cloud 断路器的注释 - Resilience4j
- ios - 通用链接在 iOS 13 上无法正常工作(未下载 AASA)
- kotlin - com.google.gson.internal.LinkedTreeMap 无法转换为我的自定义类
- xdebug - 如何让我的 API 响应更快?
- xaml - 如何将 datepicker 绑定到 viewModel?
- syntax - 编写不带括号的 APL 公式
- angular - 角度反应形式的验证
- php - PHP Insert INTO DB 不适用于提交按钮
- r - 这是执行数据帧函数后的 5*5 数组吗?
- c# - 添加 System.Security.Cryptography