【问题标题】:Problems with matplotlib FuncAnimation and Gtk Buttonmatplotlib FuncAnimation 和 Gtk 按钮的问题
【发布时间】:2017-01-25 12:12:18
【问题描述】:

我在回调 gtk 按钮时遇到了一些意想不到的问题。

我的想法是创建一个笔记本,在其中我有两个使用 matplotlib 的绘图和一个 gtk 按钮来启动动画绘图。当我单击 gtk 按钮时,问题就开始了。当我点击回调函数被调用,但代码没有运行被调用函数“animate”,我不知道确切的原因。

在另一种情况下,我在 gtk 窗口中添加笔记本后调用函数“动画”并且动画效果很好。

我想知道只有当用户点击 gtk 按钮时,如何启动 matplotlib 的 FuncAnimation。

这是我的代码:

import gtk
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas

def callbackDelay(widget, a, f):
    ani = animation.FuncAnimation(f, a.animate,interval=1000)   

class test:
    def __init__(self):
        global f
        self.p = 3
        f = plt.figure()
        c = f.add_subplot(211)
        b = f.add_subplot(212)
        xInit = range(0,1000,1)
        yInit = [0] * 1000
        self.line = c.plot(xInit, yInit, '-')
        c.axis([0,200,0,500])
        self.line1 = b.plot(xInit, yInit, '-')
        b.axis([0,200,0,500])

    def animate(self,i):
        global canvas
        q = range(0,10+self.p,1)
        w = range(1,11+self.p,1)
        self.line[0].set_data(q,w)
        self.line1[0].set_data(q,w)
        canvas.draw()
        self.p = self.p + 10

win = gtk.Window()
win.connect("destroy", lambda x: gtk.main_quit())
win.set_default_size(200, 200)
win.set_title("Animation plot with GTK")

notebook = gtk.Notebook()
label = gtk.Label("test")

vbox = gtk.VBox(spacing=6)

#Gtk Button
button = gtk.Button()
button.set_label("init")

a = test()
canvas = FigureCanvas(f)  # a gtk.DrawingArea

button.connect("clicked", callbackDelay, a, f)

win.add(notebook)
vbox.pack_start(button)
vbox.pack_start(canvas)
notebook.append_page(vbox, label)
win.show_all()
gtk.main()

【问题讨论】:

    标签: python matplotlib gtk


    【解决方案1】:

    def callbackDelay
    

    你正在调用 a.animate 而不带括号。试试:

    a.animate(10)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多