我該如何避免這種情況?while True
Loop。我必須運行def func(i)
無限次。避免這種循環的原因是,無論何時我創建兩個類,一個類有這段代碼,另一個類有一個按鈕來訪問這段代碼時,按下按鈕,但我得到的問題是,我不能將這個matplotlib
集成在tkinter窗口中。該按鈕單獨顯示,matplotlib單獨運行。但是,當我刪除while循環,然後它以某種方式解決了這個問題,但沒有無限循環。如何避免infinte循環
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.pyplot as plt
import numpy as np
import tkinter as tk
from tkinter import *
import matplotlib.animation as animation
j=0
fig = plt.figure()
ax1 = fig.add_axes([0.85, 0.093, 0.04, 0.8])
cax = fig.add_subplot(1, 1, 1)
H = np.array([[1, 2, 3, 1], [4, 5, 6, 10], [3, 7, 8, 4], [10, 5, 3, 1]])
Z = np.array([[3, 290, 600], [1011, 230, 830], [152, 750, 5]])
while True:
def func(i):
global j
if j == 0:
j += 1
rows, cols = H.shape
im = plt.imshow(H, interpolation='nearest',
extent=[0, cols, 0, rows],
cmap='bwr', vmin=0, vmax=10)
fig.colorbar(im, cax=ax1, orientation='vertical')
elif j == 1:
j -= 1
rows, cols = H.shape
im = plt.imshow(Z, interpolation='nearest', cmap='Spectral', vmin=0, vmax=1023,extent=[0, cols, 0, rows])
v = np.linspace(0, 1023, 15, endpoint=True)
fig.colorbar(im, cax=ax1, orientation='vertical', ticks=v)
ani = animation.FuncAnimation(fig, func, interval=1000)
plt.show()
plt.close()
我不明白你爲什麼要一遍又一遍地定義一個函數,看起來像一個大錯誤的設計給我。你能否更廣泛地解釋你想完成什麼? –
此外,代碼中沒有按鈕。不過看起來按鈕是在while循環中使用動畫循環結構的原因。但是由於我們不知道按鈕的問題,所以在這裏不可能提供幫助。從你所說的話,「我不能將這個matplotlib集成到tkinter窗口中」似乎是**真正的問題**,並且詢問這個問題而不是其他問題可能是有意義的。 – ImportanceOfBeingErnest
@alec_djinn我的老師給我的任務是建立數組並使用matplotlib一次又一次地顯示它們。然後我必須將matplotlib集成到tkinter中。 –