tkinterでボタンを押すと画像が切り替わり5秒後に画像が元に戻るプログラムを作りたいのですが、うまく行きません。
canvas.itemconfigを使い、ボタンを押すとimages[0]からimages[1]に切り替わり、5秒後にimages[0]戻るプログラムを作ってみましたが、切り替わりませんでした。
改善点を教えてください。よろしくお願いします。
python
1import tkinter as tk 2 3def changeImg(): 4 global root 5 canvas.itemconfig( 6 on_canvas, 7 image=images[1] 8 ) 9 root.after(5000,rechangeImg()) 10 11def rechangeImg(): 12 global root 13 canvas.itemconfig( 14 on_canvas, 15 image=images[0] 16 ) 17 18 19lb=None 20on_canvas=None 21images=[] 22def run(): 23 global root,lb,canvas,on_canvas,images 24 25 #meinwindow 26 root=tk.Tk() 27 root.geometry("1140x600") 28 root.title("title") 29 font=("Helevetica",14) 30 font_log=("Helevetica",11) 31 #canvas make 32 canvas=tk.Canvas( 33 root, 34 width=960, 35 height=600, 36 relief=tk.RIDGE, 37 bd=2 38 ) 39 canvas.place(x=175,y=0) 40 #image 41 images.append(tk.PhotoImage(file="001.png")) 42 images.append(tk.PhotoImage(file="002.png")) 43 44 on_canvas=canvas.create_image( 45 0, 46 0, 47 image=images[0], 48 anchor=tk.NW 49 ) 50 #listbox 51 lb=tk.Listbox( 52 root, 53 width=20, 54 height=38, 55 font=font_log 56 ) 57 #scroolbar1 58 sb1=tk.Scrollbar( 59 root, 60 orient=tk.VERTICAL, 61 command=lb.yview 62 ) 63 #スクロールバーと連動 64 lb.configure(yscrollcommand=sb1.set) 65 lb.grid(row=0,column=0) 66 sb1.grid(row=0,column=1,sticky=tk.NS) 67 #button 68 button=tk.Button( 69 root, 70 bg="black", 71 command=lambda:changeImg(), 72 text="Button", 73 width=19, 74 ) 75 button.place(x=0,y=580) 76 #mainloop 77 root.mainloop() 78 79 80 81if __name__=="__main__": 82 run()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/20 07:22