質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1580閲覧

python tkinter 一定時間画像を切り替える方法について教えてください。

snakelegs

総合スコア26

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/02/20 06:23

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()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

とりあえず、root.after(5000,rechangeImg()) の箇所を root.after(5000,rechangeImg) に修正してください

after()の第2引数に渡すのは関数です。上記の記述だと直ちに rechangeImg() が実行されてしまい、その戻り値Noneafter()第2引数として渡されてしまいます。

投稿2019/02/20 07:07

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

snakelegs

2019/02/20 07:22

理解できました。解決していただきありがとうございます。 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問