ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

みんなのPythonコミュのプログラム実行時エラーとなる

  • mixiチェック
  • このエントリーをはてなブックマークに追加
python初心者のharrisonと申します。1つ質問がございます。
「みんなのpython」のP435のソース(Tkinterを使ったGUI構築サンプル)を入力して実行しましたが、スタートボタンを押すと以下のようなエラーが表示され正常に動きません。
何が問題なのかインデント等もチェックしましたが、わかりませんでした。
基本的なことが分かっていないのかもしれませんが、コメント頂けると幸いです。よろしくお願いいたします

尚、pythonのバージョンは2.6.5で、py scriptor 2.0.0を利用しています。

実行時のエラー

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
return self.func(*args)
File "C:\module1.py", line 25, in countdown
if self.time == 0:
AttributeError: App instance has no attribute 'time'

入力したソースは以下の通りです。

#!/c/python26/phthon
# -*- coding: shift_jis -*-
from Tkinter import *
import time

class App(Frame):
TIME = 60*3
def __init__(self, master=None):
" 初期化の設定 "
Frame.__init__(self, master)
self.master.title("Tk Timer")
self.timestr = StringVar()
self.timestr.set("03:00")
l = Label(self,textvariable=self.timestr,
font=('Helvetica','48','bold'))
b1 = Button(self,text="Start",command=self.countdown)
b2 = Button(self,text="Quit",
command=self.master.destroy)
for obj,sideparam in ((l,TOP),(b1,LEFT),(b2,RIGHT)):
obj.pack(side=sideparam)
self.pack()

def countdown(self):
" タイマーの時間を減らしていくメソッド "
if self.time == 0:
self.time = time.time()
timeleft = max(self.TIME-(time.time()-self.time),0)
min,sec = (timeleft) / 60, timeleft % 60
self.timestr.set("%02d:%02d" % (min, sec))
self.after(1000,self.countdown)

if __name__ == "__main__":
app = App()
app.mainloop()

コメント(3)

def __init__(self, master=None):
Frame.__init__(self, master)
self.time = 0 # <- これ追加
すみません。kenkoさん、Koseiさんの回答で、無事実行できるようになりました。ありがとうございました。わーい(嬉しい顔)

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

みんなのPython 更新情報

みんなのPythonのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング