tkinter
を使って小さなプログラムを書いて、私がプログラムに与えているパラメータに基づいて数字を生成しました(gui
インターフェイス経由)。私は図を直接tkinter
とCanvas
を使って描いています。今度は、一連の図を生成し、アニメーション化されたループに入れたいと思います。私はgif
アニメーションとload it into the figureを生成することができますが、私はこれを直接tkinter
で行うことができるかどうかです。私はすべてをループに入れることができますが、イベントハンドラを失います。その他のオプションは?tkinterでアニメーションを生成する
編集
ここでは簡単なスクリプトです:
#!/usr/bin/python
from Tkinter import *
import ttk
import numpy as np
colors = {1:'#F00',
2:'#0F0',
3:'#00F',
4:'#FF0',
5:'#0FF'}
root = Tk()
canvas = Canvas(root,width=400,height=400)
label = Label(root,text='seed')
values = StringVar()
combo = ttk.Combobox(root)
def painter(event):
seed = int(combo.get())
np.random.seed(seed)
nrows = 10
ncols = 10
Y = 0
dx = 400/nrows
dy = 400/ncols
for i in range(nrows):
X = 0
for j in range(ncols):
n = np.random.randint(1,5)
col = colors[n]
canvas.create_rectangle(X,Y,X+dx,Y+dy,width=1,fill=col)
X += dx
Y += dy
canvas.grid(column=0,row=0,rowspan=2)
combo.grid(row=1,column=1)
label.grid(row=0,column=1)
combo['values'] = [1,2,3,4]
combo.bind('<<ComboboxSelected>>',painter)
combo.current(0)
painter(None)
root.mainloop()
私は無限ループを含めるようにpainter
機能を変えることができるが、この方法は、私がmainloop()
に到達することはありませんので、私が呼び出す必要がありますこれは、メインループが作成された後にのみ、どのようにですか?
あなたが行ったことを示すためにいくつかのコードを提供できますか? – Sraw
あなたはアニメーションの次のフレームを描画するために 'after'を繰り返し呼び出すことができます。あなたが望むときに' after'呼び出しが正確にトリガされない場合に注意してください(指定した遅延の後にある時間だけ呼び出されることを保証します)あなたのアニメーションが不規則に見えたり、アニメーションが希望よりも遅くなる可能性があります。 –
@JamesKent、関数の後にこれを追加しますか? – Yotam