日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tkinter回调异常_使用matplotlib保存动画时Tkinter回调出现异常

發布時間:2025/4/5 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tkinter回调异常_使用matplotlib保存动画时Tkinter回调出现异常 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我在問這個問題時有點猶豫,因為似乎有很多“Tkinter回調異常”的問題,但我找不到一個適合我這里的問題。在

我試圖用matplotlib和ffmpeg保存MP4動畫(滲透模擬)。這段代碼在我的家用筆記本電腦上可以正常工作,但在我的工作電腦上不行。如果我用plt.show()替換anim.save行,它也可以正常工作,但我確實想保存動畫。我在Ubuntu17.04上使用Python3.5.2(我已經安裝了ffmpeg)。在

錯誤如下:>>> Exception in Tkinter callback

Traceback (most recent call last):

File "/usr/lib/python3.5/tkinter/__init__.py", line 1558, in __call__

return self.func(*args)

File "/usr/lib/python3.5/tkinter/__init__.py", line 604, in callit

func(*args)

File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 373, in idle_draw

self.draw()

File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_tkagg.py", line 354, in draw

FigureCanvasAgg.draw(self)

File "/usr/lib/python3/dist-packages/matplotlib/backends/backend_agg.py", line 474, in draw

self.figure.draw(self.renderer)

File "/usr/lib/python3/dist-packages/matplotlib/artist.py", line 62, in draw_wrapper

draw(artist, renderer, *args, **kwargs)

File "/usr/lib/python3/dist-packages/matplotlib/figure.py", line 1165, in draw

self.canvas.draw_event(renderer)

File "/usr/lib/python3/dist-packages/matplotlib/backend_bases.py", line 1809, in draw_event

self.callbacks.process(s, event)

File "/usr/lib/python3/dist-packages/matplotlib/cbook.py", line 563, in process

proxy(*args, **kwargs)

File "/usr/lib/python3/dist-packages/matplotlib/cbook.py", line 430, in __call__

return mtd(*args, **kwargs)

File "/usr/lib/python3/dist-packages/matplotlib/animation.py", line 661, in _start

self._init_draw()

File "/usr/lib/python3/dist-packages/matplotlib/animation.py", line 1221, in _init_draw

self._draw_frame(next(self.new_frame_seq()))

StopIteration

產生錯誤的代碼是:

^{pr2}$

如果有必要,我可以為Percolator類重新生成代碼,但這部分工作正常。它有兩個函數:update_iter,一個生成函數,只要動畫繼續,就會產生{};和{},它以(迭代器的結果和)im作為輸入,最后兩行是im.set_array(self.states)

return im,

更新:

這是一個MWE。在import numpy as np

import matplotlib.pyplot as plt

from matplotlib import animation

class Percolator:

def __init__(self):

self.i = 0

self.states = np.zeros((10, 10))

self.end = False

def update(self, garbage=None, im=None):

self.i += 1

if self.i == 10:

self.end = True

im.set_array(self.states)

return im,

def update_iter(self):

while self.end == False:

yield True

def percolate():

perc = Percolator()

fig, ax = plt.subplots()

im = plt.imshow(perc.states)

anim = animation.FuncAnimation(fig, perc.update, perc.update_iter, repeat=False, \

fargs=(im, ), save_count=100)

anim.save("perc.gif", writer="imagemagick")

在這個例子中,Percolator類沒有做任何有趣的事情——它設置了一個10x10的網格,每個對其update函數的調用都會將圖像設置為相同的10x10網格。在

如果FuncAnimation的frames屬性設置為50(例如),而不是設置為perc.update_iter,則沒有錯誤,圖像將正確保存。所以問題似乎出在我的發電機函數上。我想使用generator函數,因為我想不斷地創建新的幀,直到滿足perc.states的某些條件為止——這里,無聊的是,我只是要求它繼續進行10次迭代。在

系統詳細信息:python3.5.3、matplotlib 2.0.0、ubuntu17.04。在

更新2:

升級到matplotlib 2.0.2后出現相同問題。同時,打印一些輸出會顯示錯誤發生在迭代結束時。實際上,如果update_iter更改為:def update_iter(self):

print(self.end)

while self.end == False:

yield True

。。。則輸出為:False

False

False

False

False

False

False

False

False

False

False

True

>>> True

Exception in Tkinter callback

Traceback (most recent call last):

etc.

總結

以上是生活随笔為你收集整理的tkinter回调异常_使用matplotlib保存动画时Tkinter回调出现异常的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。